规则
通配符
| 符号 | 说明 |
|---|---|
| * | 任意字符 |
| ? | 单个字符 |
| […] | 符号集 |
| [^…] | 符号集取反 |
假想目标(Phony target)
不代表文件的工作目标。例如:clean .PHONY: clean 标准假想工作目标: all,install,clean,distclean,check
变量
$(variable-name)
变量名若为单一字符,则不需要加上括号。
自动变量
| 符号 | 描述 |
|---|---|
| $@ | 工作目标的文件名 |
| $% | 归档文件成员结构中的文件名元素。 |
| $< | 第一个必要条件的文件名 |
| $? | 时间搓在工作目标之后的所有必要条件,并以空格隔开这些必要条件 |
| $^ | 所有必要条件的文件名,并以空格隔开。会删除重复的文件名。 |
| $+ | 所有必要条件的文件名,并以空格隔开。包含重复的文件名。 |
| $* | 工作目标的主文件名。文件名由两部分组成,主文件名+后缀 |
VPATH = src:include;该变量是一系列文件夹名称,可供make查找文件<be> vpath pattern directory-list, 例如:"vpath %.c src" "vpath %.h include"
模式 模式规则中,%代表任意多个字符。可以放在模式中的任何地方,不过只能出现一次。
静态模式规则
shell
$(OBJECTS): %.o: %.c
$(CC) -c $(CFLAGS) $< -o $@回显 以@开头,表示不显示要执行的命令。 执行 每行命令在单独的子shell中执行,互不依赖。可以用“;”隔开。
递归执行
shell
subsystem:
cd subdir && $(MAKE)
sybsystem:
$(MAKE) -C subdir环境变量
使用export将变量加入环境变量中。
shell
export VARIABLE…
unexport …如果不带参数,则是将所有变量传入子make。