变量的基础

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

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

  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中的变量在使用处展开的真实样子。可见其就是一个“替代”的原理。

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