| 
 
| 规则 
 
 
 目标(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)
 | 
 |