参考:http://stackoverflow.com/questions/448910/makefile-variable-assignment
有个人问了一个问题,
VARIABLE = value
VARIABLE ?= value
VARIABLE := value
VARIABLE += value
上述几种Makefile的赋值有什么区别?
参考如下:
后期设置
VARIABLE = value
正常设置一个变量 - 变量的值不是在声明而是在使用时递归展开
立即设置
VARIABLE := value
直接使用 value 的值来设置来变量 - 它的值在声明时就展开了。
空时设置
VARIABLE ?= value
只有在变量未被设置时设置成value
追加设置
VARIABLE += value
Append是把 value 追加到 VARIABLE 上(或是如果变量不存在则设置该值)
参考Makefile如下:
ifdef DEFINE_VRE
VRE = "Hello World!"
endif
ifeq ($(OPT),define)
VRE ?= "Hello World! First!â
endif
ifeq ($(OPT),add)
VRE += "Kelly!â
endif
ifeq ($(OPT),recover)
VRE := "Hello World! Again!â
endif
x = foo
y = $(x) bar
x = xyz
m := foo
n := $(m) bar
m := xyz
all:
@echo $(VRE)
@echo $y
@echo $n