• 变量的基础

    变量的基础

    变量在声明时需要给予初值,而在使用时,需要给在变量名前加上 $ 符号,但最好用小括号() 或是大括号 {} 把变量给包括起来。如果你要使用真实的 $ 字符,那么你需要用$$ 来表示。

    变量可以使用在许多地方,如规则中的“目标”、“依赖”、“命令”以及新的变量中。先看一个例子:

    1. objects = program.o foo.o utils.o
    2. program : $(objects)
    3. cc -o program $(objects)
    4.  
    5. $(objects) : defs.h

    变量会在使用它的地方精确地展开,就像C/C++中的宏一样,例如:

    1. foo = c
    2. prog.o : prog.$(foo)
    3. $(foo)$(foo) -$(foo) prog.$(foo)

    展开后得到:

    1. prog.o : prog.c
    2. cc -c prog.c

    当然,千万不要在你的Makefile中这样干,这里只是举个例子来表明Makefile中的变量在使用处展开的真实样子。可见其就是一个“替代”的原理。

    另外,给变量加上括号完全是为了更加安全地使用这个变量,在上面的例子中,如果你不想给变量加上括号,那也可以,但我还是强烈建议你给变量加上括号。