欢迎光临散文网 会员登陆 & 注册

9.7Makefile函数

2020-08-18 13:07 作者:韦东山  | 我要投稿



视频教程👇

韦东山升级版全系列嵌入式免费视频_快速入门篇

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


视频教程👇

韦东山升级版全系列嵌入式免费视频_快速入门篇


9.7Makefile函数的评论 (共 条)

分享到微博请遵守国家法律