![](https://csdnimg.cn/release/download_crawler_static/88623066/bg4.jpg)
5. 常见函数
1. $(function arguments) //函数调用
2. text = $(shell echo *.c)
3. $(subst from,to,text) //把 text 中的 from 字符串替换为 to,返回替换后的字符串
4. $(subst ee,EE,feet on the street) //返回 fEEt on the strEEt
5.
6. $(patsubst pattern,replacement,text) //text 中的单词是否符合模式 pattern,如果匹配则以 replacement 替换,通配符%表
示任意长度的字符串,返回替换后的字串
7. $(patsubst %.c,%.o,x.c bar.c) //返回 x.o bar.o
8.
9. $(findstring find,in) //在 in 中查找 find,如果找到返回 find,否则返回空字符串
10. $(findstring a,a b c) //返回 a
11.
12. $(filter pattern...,text) //以 pattern 模式过滤 text 中的单词,返回符合模式的字符串
13. $(filter %.c %.s,$(sources)) //返回 foo.c bar.c bar.s
14.
15. $(filter-out pattern...,text) //以 pattern 模式过滤 text 中的单词,返回不符合模式的字符串
16. $(filter-out %.c %.s,$(sources)) //返回 foo.o
17.
18. $(sort list) //将 list 中的单词按字母升序排序,自动去重
19. $(sort programing linux c programing) //返回 c linux programing
20.
21. $(word n,text) //返回 text 中取出第 n 个单词,从 1 开始计数,如果 n 比单词书大返回空字符串
22. $(word 2,programing linux c programing) //返回 linux
23. $(word 5,programing linux c programing) //返回空字符串
24.
25. $(wordlist s,e,text) //返回 text 中从 s 到 e 的单词字串
26. $(wordlist 2,4,I like linux c programing) //返回 like linux c
27. $(wordlist 6,8,I like linux c programing) //返回空字符串
28. $(wordlist 2,8,I like linux c programing) //返回 like linux c programing
29.
30. $(words text) //返回 text 中的单词数
31. $(words I like linux c programing) //返回 5
32.
33. $(word $(words text),text) //返回 text 中最后一个单词
34.
35. $(firstword text) //返回第一个单词
36. $(firstword I like linux c programing) //返回 I
1. $(dir names) //返回 names 的目录部分,如果没有/则返回./
2. $(dir /usr/src/bin/makefile hello.c) //返回/usr/src/bin ./
3.
4. $(notdir names) //返回 names 的非目录部分即文件名
5. $(notdir /usr/src/bin/makefile hello.c) //返回 makefile hello.c
6.
7. $(suffix names) //返回 names 的后缀名序列,如果没有后缀则返回空字符串
8. $(suffix /usr/src/bin/makefile hello.c) //返回" .c"
9.
10. $(basename names) //返回 names 的前缀名序列,如果没有前缀则返回空字符串
11. $(basename /usr/src/bin/makefile hello.c) //返回/usr/src/bin/makefile hello
12.
13. $(addsuffix suffix,names) //返回 names 的添加后缀的序列
14. $(addsuffix .c,foo hello) //返回 foo.c hello.c
15.
16. $(addprefix prefix,names) //返回 names 的添加前缀的序列
17. $(addprefix /usr/src/,hello.c) //返回/usr/src/hello.c
18.
19. $(join list1,list2) //将 list2 中的每个单词插入到 list1 各个单词的后面,多余的复制到新字符串中
20. $(join aa bb,11 22 33) //返回 aa 11 bb 22 33
1. $(foreach var,list,text) //把 list 中的单词逐一放到参数 var 中,然后再执行 text 的表达式,每一次 text 返回一个字符串,每
个字符串组成的整个字符串作为其返回值
2. names := a b c d
3. files := $(foreach n,$(names),$(n).o) //返回 a.o b.o c.o d.o
4.
5. ifeq/ifneq/ifdef/ifndef
6. $(if condition,then-part)
7. $(if condition,then-part,else-part)
1. $(call func,para1,para2,para3...)
2. reverse=$(1) $(2)
3. $(call reverse,a,b) //返回 a b
4.
5. files := $(shell echo *.c) //files 的值为所有.c 文件的名称
6.
7. ifdef ERROR_01
8. $(error error is $(ERROR_01))
9. endif