Skip to content

规则 ​

通配符 ​

符号说明
*任意字符
?单个字符
[…]符号集
[^…]符号集取反

假想目标(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。