make
命令只执行完遇到的第一条规则,包括递归执行生成先决条件的规则,其他的规则不执行。要执行其他规则,需要指定目标,比如make clean
。Makefile包括明确的规则、模糊的规则、变量的定义、指令和注释。
targets ... : prerequisites ...
recipe # 注意Tab键开头
...
main.o : defs.h
不用写源文件名和编译命令。#
后面的内容忽略,如果有反斜杠折行则会跨行注释\#
define
指令中注释不会被忽略,而是作为变量的值,根据变量展开时的上下文,被视为注释或构建命令文本。\
可以将长行折成多行。OBJS = main.o test.o
test : $(OBJS)
g++ -o test $(OBJS)
.PHONY : clean # 声明为伪目标
clean :
-rm $(OBJS) # rm出错时继续执行
make clean
make
命令下执行。