在Makfile中一共有4中赋值方法,形式分别以下:shell
VAR = value VAR ?= value VAR := value VAR += value
赋值不是当即生效,要等到在使用变量VAR时才展开。若一个变量引用另一个变量,两个变量定义的位置,谁在前谁在后没有任何关系,都能达到一样的效果。也是很容易出错的地方,例如:spa
SUBDIR=workspace DIR=$(SUBDIR) SUBDIR=/usr/local/ all: @echo $(DIR)
结果是:/usr/local/code
不会递归展开,若引用的变量不存在,就展开为空串递归
若是变量没有初始化,就给它赋值class
在已有赋值后追加赋值变量