用变量定义变量的两种方式(Make)

用变量定义变量的两种方式(Make)

使用= #

在 = 左侧是变量,右侧是变量的值,右侧变量的值可以定义在文件的任何一处,也就是说,右侧中的变量不一定非要是已定义好的值,其也可以使用后面定义的值。如:

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

From #