9.7Makefile函数

视频教程👇
makefile 里面可以包含很多函数,这些函数都是make本身实现的,下面我们来几个常用的函数。
引用一个函数用“$”。
函数foreach
函数foreach语法如下:
$(foreach var,list,text)
前两个参数,‘var’和‘list’,将首先扩展,注意最后一个参数‘text’此时不扩展;接着,对每一个‘list’扩展产生的字,将用来为‘var’扩展后命名的变量赋值;然后‘text’引用该变量扩展;因此它每次扩展都不相同。结果是由空格隔开的‘text’ 在‘list’中多次扩展的字组成的新的‘list’。‘text’多次扩展的字串联起来,字与字之间由空格隔开,如此就产生了函数foreach的返回值。
实例:

结果:
B = a.o b.o c.o
函数filter/filter-out
函数filter/filter-out语法如下:
$(filter pattern...,text) # 在text中取出符合patten格式的值
$(filter-out pattern...,text) # 在text中取出不符合patten格式的值
实例:

结果:
D = d/
E = a b c
Wildcard
函数Wildcard语法如下:
$(wildcard pattern) # pattern定义了文件名的格式, wildcard取出其中存在的文件
这个函数wildcard会以pattern这个格式,去寻找存在的文件,返回存在文件的名字。
实例:
在该目录下创建三个文件:a.c b.c c.c

结果:
files = a.c b.c c.c
我们也可以用wildcard函数来判断,真实存在的文件
实例:

结果:
files3 = a.c b.c c.c
patsubst函数
函数patsubst语法如下:
$(patsubst pattern,replacement,$(var))
patsubst函数是从var变量里面取出每一个值,如果这个符合pattern格式,把它替换成replacement格式。
实例:

结果:
dep_files = a.d b.d c.d d.d e.d abc
视频教程👇
