【Makefile】函数

说明

本节介绍Makefile中使用的函数。

函数的基础请参考【Makefile】基础

字符串处理函数

$(subst <from>,<to>,<text>)

作用:将text中的from替换成to,并返回修改后的text(当然也有可能没有被修改)。

$(patsubst <pattern>,<replacement>,<text>)

作用:基本同subst,只是这里变成了对满足模式的字符串的替换。

$(strip <string>)

作用:将string前后的空格去掉并返回修改后的string(当然也有可能没有被修改)。

$(findstring <find>,<in>)

作用:在in中找字符串find,如果找到了就返回find,否则返回空。

$(filter <pattern...>,<text>)

作用:过滤text字符串,只保留符合模式的字符串,pattern可以有多个。

$(filter-out <pattern...>,<text>)

作用:同filter刚好相反,这里删除符合模式的字符串。

$(sort <list>)

作用:升序排序list里面的单词。

$(word <n>,<text>)

作用:取text中的第n个单词,从1开始算。

$(wordlist <s>,<e>,<text>)

作用:取text中第s个开始到第e个为止的单词,包括第e个单词。

$(words <text>)

作用:返回text中的单词数。

$(firstword <text>)

作用:返回text中的第一个单词。

文件名操作

$(dir <names...>)

作用:取names中的目录部分。

$(nodir <names...>)

作用:取names中的非目录部分。

$(suffix <names...>)

作用:取names中的后缀部分,比如main.c就取得.c部分。

$(basename <names...>)

作用:取names中的前面部分,比如main.c就取得main部分。

$(addsuffix <suffix>,<names...>)

作用:给names中的每一个成员加后缀suffix。

$(addprefix <prefix>,<names...>)

作用:给names中的每一个成员加前缀prefix。

$(join <list1>,<list2>)

作用:将list1中的单词加到list2对应位置的单词之后。没有对应的就不管了。

$(abspath <names...>)

作用:返回绝对路径。

结构函数

$(foreach <var>,<list>,<text>)

作用:取出list中的每一个单词并赋值给var,再执行text语句。

$(if <condition>,<then-part>,<else-part>)

作用:判断condition条件,满足条件就执行then-part,否则执行else-part。两个part都可以是空。

call函数

$(call <expression>,<param1>,<param2>...)

作用:执行expression,后面的是参数,它们在expression中用$(1)$(2)...表示。

origin函数

$(origin <var>)

作用:确定var的来源,是undefined?default?environment?file?command line?override?automatic?

shell函数

$(shell <cmd>)

作用:执行cmd命令。相当于`cmd`。

eval函数

$(eval <text>)

作用:不明。

似乎是展开text,作为Makefile的一部分。但是为什么要这么做,为什么不直接写text,不明白......

告警/错误函数

$(error <tetx>)

作用:显示错误并停止执行。

$(warning <text>)

作用:显示告警,但是会继续执行。

wildcard函数

$(wildcard pattern...)

作用:返回工作目录下满足pattern的所有文件名,多个文件名之间用空格隔开。

运行make之后的结果:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值