3.6.5 Makefile中的变量
在上面的例子中,我们需要在"edit"的规则中两次列出所有的.o目标文件(如下所示):
edit : main.o kbd.o command.o display.o insert.o search.o files.o utils.o cc -o edit main.o kbd.o command.o display.o insert.o search.o files.o utils.o |
这种重复信息很容易出错。如果我们在程序中添加了一个新的.o目标文件,那么就有可能在一个列表中添加了这个.o目标文件名,但忘记在另一个地方也同时加入。通过使用一个变量,我们就有可能减少这种出错的危险并且也使得Makefile看上去更简明一些。使用变量可以让我们定义一次文本字符串,随后可以在多个地方进行替换。
对于Makefile,典型的做法是定义一个名称为objects、OBJECTS、objs、OBJS、obj或者OBJ的变量来表示所有.o目标文件的列表。我们通常会在Makefile中使用如下一行来定义一个变量objects:
objects = main.o kbd.o command.o display.o insert.o search.o files.o utils.o |
此后,在每一处需要列出.o目标文件表的地方都可以通过写上"$(objects)"来替换变量的值。