还是上节中的那个例子,edit目标的依赖比较多,有时候会出现这样一种情况,就是我们edit目标中可能需要再加一些目标文件,加完之后可能我们就忘记在命令行中添加刚加入的目标文件了,或者忘记在最后的clean伪目标(或者其他目标中)中加入新目标文件了。为了防止出现这样的情况,和减少修改Makefile文件多处的麻烦。我们可以引入变量:
objects = main.o kbd.o command.o display.o \ insert.o search.o files.o utils.o edit : $(objects) cc -o edit $(objects) …… …… clean : rm edit $(objects)
如上面的语法所示,指定变量的时候直接写个变量名(这个名称可以任意,但是尽量使用业界标准的,如:objects/OBJ/objs等)= ?,这样就指定了变量的内容,要使用变量的时候注意要用(objects)。
最后再提醒一点:我们尽量在Makefile中少写多目标,单依赖的规则,尽量写单目标,多依赖的规则。这样在后期维护的时候会更加高效。