在Makeifile中有不少函数这里总结一下自己在工程用到的:
wildcard
它有一个参数,功能是展开成一列所有符合由其参数描述的文 件名,文件间以空格间隔。你可以像下面所示使用这个命令:
SOURCES= $(wildcard *.c)
这行会产生一个所有以 ‘.c’ 结尾的文件的列表,然后存入变量 SOURCES 里。当然你不需要一定要把结果存入一个变量。
notdir
把展开的文件的路径去掉,只显示文件名而不包含其路径信息,例如:
FILES =$(notdir $(SOURCES))
这行的作用是把上面以'.c'结尾的文件的文件列表中附带的路径去掉,只显示符合条件的文件名。
**subst**:
$(subst FROM, TO, TEXT),
即将字符串TEXT中的子串FROM变为TO。
$(subst _defconfig,,$(b)),
意思是将字符串$(b)中的_defconfig去掉。
foreach
$(foreach <var>,<list>,<text>)
这个函数的意思是,把参数;中的单词逐一取出放到参数;所指定的变量中,然后再执行< text>;所包含的表达式。每一次
所以,;最好是一个变量名,;可以是一个表达式,而
names := a b c d
files := $(foreach n,$(names),$(n).o)
上面的例子中,$(name)中的单词会被挨个取出,并存到变量 n 中,$(n).o 每次根据 $(n) 计算出一个值,这些值以空格分隔,最后作为foreach函数的返回,所以,$(files)的值是 a.o b.o c.o d.o。
引用自:https://blog.csdn.net/BHJ1119/article/details/54970794