GNU make manual 翻译( 一百五十四)

继续翻译

6.1 Basics of Variable References

=================================



To substitute a variable's value, write a dollar sign followed by the

name of the variable in parentheses or braces: either `$(foo)' or

`${foo}' is a valid reference to the variable `foo'.  This special

significance of `$' is why you must write `$$' to have the effect of a

single dollar sign in a file name or recipe.



   Variable references can be used in any context: targets,

prerequisites, recipes, most directives, and new variable values.  Here

is an example of a common case, where a variable holds the names of all

the object files in a program:



     objects = program.o foo.o utils.o

     program : $(objects)

             cc -o program $(objects)



     $(objects) : defs.h



   Variable references work by strict textual substitution.  Thus, the

rule



     foo = c

     prog.o : prog.$(foo)

             $(foo)$(foo) -$(foo) prog.$(foo)



could be used to compile a C program `prog.c'.  Since spaces before the

variable value are ignored in variable assignments, the value of `foo'

is precisely `c'.  (Don't actually write your makefiles this way!)



   A dollar sign followed by a character other than a dollar sign,

open-parenthesis or open-brace treats that single character as the

variable name.  Thus, you could reference the variable `x' with `$x'.

However, this practice is strongly discouraged, except in the case of

the automatic variables (*note Automatic Variables::).

6.1 变量参照的基本
=================================

为了替换一个变量的值,要写一个美元符号后面跟着括号或者大括号,里面是变量名成:或者$(foo) 或者 ${foo}是一个对变量 foo的有效参照。这个$的特殊重要性就是为什么你必须写 $$来在文件名或者片段中来代表$符号本身。

变量参照可以用在任何上下文中:目的,前提条件,片段,大多数的指令,还有几个变量值中。这里有一个一般情况的例子,此处变量持有在一个程序中的所有的目标文件名:

objects = program.o foo.o utils.o
program : $(objects)
cc -o program $(objects)

$(objects) : defs.h

变量参照采用严格的文本替换因此,下列规则 

foo = c
prog.o : prog.$(foo)
$(foo)$(foo) -$(foo) prog.$(foo)

可以被用来编译一个C 程序 prog.c, 因为变量前的空格会被在变量赋值的时候被忽略,foo的值就是精确的c(当然,实际上不要像这样来写你的makefile)。

一个非美元符号,非开放括号或者非开放打括号前面有一个美元符号的,被当作一个变量对待。因此你你可以用$X来参照x,但是这个实践是强烈不推荐的。除了在自动变量的场合(*note Automatic Variables::)。

后文待续

你可能感兴趣的:(Make)