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