Makefile中wildcard、notdir、patsubst函数

在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>;所包含的表达式。每一次 ;会返回一个字符串,循环过程中, ;的所返回的每个字符串会以空格分隔,最后当整个循环结束时, ;所返回的每个字符串所组成的整个字符串(以空格分隔)将会是foreach函数的返回值。

所以,;最好是一个变量名,;可以是一个表达式,而 ;中一般会使用 ;这个参数来依次枚举;中的单词。举个例子:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值