我们可以使用 · 操作符给变量追加值,如:
objects = main.o foo.o bar.o utils.o objects += another.o点击复制复制失败已复制
于是,我们的 $(objects)
值变成:main.o foo.o bar.o utils.o another.o
( another.o
被追加进去了)
使用 +=
操作符,可以模拟为下面的这种例子:
objects = main.o foo.o bar.o utils.o objects := $(objects) another.o点击复制复制失败已复制
所不同的是,用 +=
更为简洁。
如果变量之前没有定义过,那么, +=
会自动变成 =
,如果前面有变量定义,那么 +=
会继承于前次操作的赋值符。如果前一次的是 :=
,那么 +=
会以 :=
作为其赋值符,如:
variable := value variable += more点击复制复制失败已复制
等价于:
variable := value variable := $(variable) more点击复制复制失败已复制
但如果是这种情况:
variable = value variable += more点击复制复制失败已复制
由于前次的赋值符是 =
,所以 +=
也会以 =
来做为赋值,那么岂不会发生变量的递补归定义,这是很不好的,所以 make
会自动为我们解决这个问题,我们不必担心这个问题。