3 Writing Makefiles
3.1 What Makefiles Contain
makefile包含五种内容:显式规则、隐式规则、变量定义、指令和注释。规则、变量和指令将在后面的章节中详细描述。
- 显式规则规定何时以及如何再次
make
一个或多个文件,称为规则的目标。它列出了目标所依赖的其他文件,也就是目标的先决条件,还可能给出用于创建或更新目标的recipe。 - 隐式规则规定了何时以及如何根据文件的名称重新
make
一类文件。它描述了与目标名称类似的文件,并给出了创建或更新这样一个目标的方法。 - 变量定义是为一个变量指定一个文本字符串值的一行,这个变量可以在以后替换一长串的文本。这里再次拿出第二章中的例子:
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 : main.c defs.h
cc -c main.c
kbd.o : kbd.c defs.h command.h
cc -c kbd.c
command.o : command.c defs.h command.h
cc -c command.c
display.o : display.c defs.h buffer.h
cc -c display.c
insert.o : insert.c defs.h buffer.h
cc -c insert.c
search.o : search.c defs.h buffer.h
cc -c search.c
files.o : files.c defs.h buffer.h command.h
cc -c files.c
utils.o : utils.c defs.h
cc -c utils.c
clean :
rm edit $(objects)
- 指令是make在读取makefile时做一些特殊事情的指令。这些包括:
–读取另一个makefile(参见包含其他makefile)。
–决定(基于变量的值)是使用还是忽略makefile的一部分(参见make