3.6.6 让make自动推断命令

2013-10-12 06:50:09 · 作者: · 浏览: 81

3.6.6  让make自动推断命令

我们并不需要为编译每个C源程序而在规则中给出相关命令,因为make自身能够判断出来:它有一个隐含规则,该规则会根据目标文件的命名形式使用"cc -c"命令根据相应的.c文件更新对应的.o文件。例如,它会使用命令"cc -c main.c -o main.o"把"main.c"编译成"main.o"。因此我们可以省略.o目标文件规则中的命令。

当一个.c文件被以这种方式自动地使用,那么它也会被自动地添加到先决条件(依赖关系)中。因此我们可以省略规则先决条件中的".c"文件--假定我们同时省略了命令。

下面是包括这两种改变和使用了变量的完整Makefile例子:

objects = main.o kbd.o command.o display.o insert.o search.o files.o utils.o
edit : $(objects)
cc -o edit $(objects)
main.o : defs.h
kbd.o : defs.h command.h
command.o : defs.h command.h
display.o : defs.h buffer.h
insert.o : defs.h buffer.h
search.o : defs.h buffer.h
files.o : defs.h buffer.h command.h
utils.o : defs.h
clean :
-rm edit $(objects)

这就是我们平时实际编写Makefile文件的样式。因为隐含规则使编译工作变得很方便,所以很重要。我们会经常使用它们。