规则
目标(target)... : 依赖(prerequiries) ...
<tab> 命令(command)
赋值方式
a = b
a ?= b
a := b
a += b
define a
b
endif
常用函数
> 字符串替换和分析函数
$ (subst from,to,text):在文本text中使用 to 替换每一处 from
$ (patsubst pattern,replacement,text ) :寻找 text 中符合格式 pattern 的字,用 replacement 替换它们,pattern 和 replacement 可以使用通配符
$ (strip string): 去掉前导和结尾空格并将中间的多个空格压缩为一个空格
$ (findstring find,in):在字符串 in 中寻找 find,如果找到,返回 find,否则返回值为空
$ (filter pattern...,text):返回在 text 中由空格隔开且匹配格式 pattern 的字,去掉不符合 pattern 的字
$ (filter-out pattern...,text):返回在 text 中由空格隔开且匹配格式 pattern 的字,去掉符合 pattern 的字
$ (sort list):将 list 中的字按字母顺序排列,并去掉重复的字,输出由单个空格隔开的字的列表
>文件名函数
$ (dir names…): 抽取 names… 中每个文件名的路径部分
$ (notdir names…): 抽取 names… 中每个文件名的路径外的一切字符
$ (suffix names…): 抽取 names… 中每个文件名的后缀
$ (basename names…): 抽取 names… 中每个文件名除后缀外的部分
$ (addsuffix suffix,names…):参数 names… 是一系列文件名,文件名之间用空格隔开;suffix 是一个后缀名;将后缀的值附加在每个独立的文件名后,完成后将文件名串联起来,它们之间用单个空格隔开
$ (addperfix perfix,names…):参数 names… 是一系列文件名,文件名之间用空格隔开;perfix 是一个前缀名;将前缀的值附加在每个独立的文件名后,完成后将文件名串联起来,它们之间用单个空格隔开
$ (wildcard pattern):参数 pattern 是一个文件名格式,包含有通配符;函数 wildcard 的结果是一列和格式匹配且真实存在的文件的名称,文件名之间用单个空格隔开
>其他函数
$ (foreach var,list,text)
$ (if condition,then-part[,else-part])
$ (origin variable)
$ (shell command arguments) |