使用= #
在 = 左侧是变量,右侧是变量的值,右侧变量的值可以定义在文件的任何一处,也就是说,右侧中的变量不一定非要是已定义好的值,其也可以使用后面定义的值。如:
foo = $(bar)
bar = $(ugh)
ugh = Huh?
all:
echo $(foo)
执行“make all”将会打出变量 \((foo) 的值是 Huh? (\)(foo) 的值是 \((bar) ,\)(bar) 的值是 \((ugh) ,\)(ugh) 的值是 Huh? )可见,变量是可以使用后面的变量来定义的。
这种形式会造成递归定义:
A = $(B)
B = $(A)
使用:= #
使用:=,可以避免递归定义。
x := foo
y := $(x) bar
x := later
其等价于:
y := foo bar
x := later