GNU make manual 翻译( 一百六十三)
继续翻译
6.6 Appending More Text to Variables ==================================== Often it is useful to add more text to the value of a variable already defined. You do this with a line containing `+=', like this: objects += another.o This takes the value of the variable `objects', and adds the text `another.o' to it (preceded by a single space). Thus: objects = main.o foo.o bar.o utils.o objects += another.o sets `objects' to `main.o foo.o bar.o utils.o another.o'. Using `+=' is similar to: objects = main.o foo.o bar.o utils.o objects := $(objects) another.o but differs in ways that become important when you use more complex values. When the variable in question has not been defined before, `+=' acts just like normal `=': it defines a recursively-expanded variable. However, when there _is_ a previous definition, exactly what `+=' does depends on what flavor of variable you defined originally. *Note The Two Flavors of Variables: Flavors, for an explanation of the two flavors of variables.
6.6 给变量追加更多文本
====================================
给一个已经定义好的变量追加更多的文本经常是很有用的。你可以用一行包含+=的行来做这件事。向这样:
objects += another.o
这将获得变量objects得值,然后把another.o 追加到它后面(前面放一个空格)。因此:
objects = main.o foo.o bar.o utils.o
objects += another.o
设置 `objects' 为 `main.o foo.o bar.o utils.o another.o'。
Using `+=' 等同于:
objects = main.o foo.o bar.o utils.o
objects := $(objects) another.o
但是当你使用更加复杂的值的时候,其差异就变得重要了。
当上述问题中的变量没有被定义的时候,+=就像通常的=: 一样,它定义了一个递归的变量。但是当变量已经有了定义,+=要做的依赖于你事前定义此变量所用的风格。关于变量两种风格,参照 *Note the Tow Flavors of Variables: Flavors
后文待续