编译构建辅助工具

makefile笔记-常用函数

2019-06-03  本文已影响0人  Mark_Liu

字符串处理函数

$(subst <from>,<to>,<text> ) : 字符串替换
$(patsubst <pattern>,<replacement>,<text> ) : 模式字符串替换
$(strip <string> )|去空格
$(findstring <find>,<in> )|查找字符串
$(filter <pattern...>,<text> )|过滤
$(filter-out <pattern...>,<text> )|反过滤
$(sort <list> )|排序
$(word <n>,<text> )|取单词
$(wordlist <s>,<e>,<text> ) |取单词串

功能:从字符串<text>中取从<s>开始到<e>的单词串。<s>和<e>是一个数字。
返回:返回字符串<text>中从<s>到<e>的单词字串。如果<s>比<text>中的单词数要大,那么返回空字符串。如果<e>大于<text>的单词数,那么返回从<s>开始,到<text>结束的单词串。

$(words <text> )|单词个数统计
$(firstword <text> )|首单词

文件名操作函数

$(dir <names...> )|取目录
$(notdir <names...> )|取文件
$(suffix <names...> )|取后缀
$(basename <names...> )|取前缀
$(addsuffix <suffix>,<names...> )|加后缀
$(addprefix <prefix>,<names...> )|加前缀
$(join <list1>,<list2> )|连接

foreach 函数

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

这个函数的意思是

参数
names := a b c d

files := $(foreach n,$(names),$(n).o)
# files 结果为a.o b.o c.o d.o

if 函数

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

或是

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

call函数

自定义函数

$(call <expression>,<parm1>,<parm2>,<parm3>...)

当make执行这个函数时,<expression>参数中的变量,如(1),(2),$(3)等,会被参数<parm1>,<parm2>,<parm3>依次取代。而<expression>的返回值就是call函数的返回值。例如:

reverse = $(1) $(2)

foo = $(call reverse,a,b)
#foo的值就是 a b

origin函数

origin函数不像其它的函数,他并不操作变量的值,他只是告诉你你的这个变量是哪里来的?其语法是:

$(origin <variable> )

注意,<variable>是变量的名字,不应该是引用。所以你最好不要在<variable>中使用“$”字符。Origin函数会以其返回值来告诉你这个变量的“出生情况”,下面,是origin函数的返回值:

shell函数

$(shell <command> <arg>...) | 执行shell指令并返回对应的值

exp

#读取readme.text 的内容赋值给content
content := $(shell cat readme.txt)

控制make的函数

$(error <text>) | 自定义错误信息并控制make停止
$(warning <text>) | 自定义警告信息 不影响make执行

参考资料

Linux makefile 教程非常详细,且易懂


ps:如有问题 欢迎交流 愿与君共勉


上一篇 下一篇

猜你喜欢

热点阅读