本文旨在记录一些常用Makefile的常用函数,用来优化编译脚本,如果想要了解完整的用法,可以参考GNU Make.

http://www.gnu.org/software/make/manual/make.html

或者其他笔者的文章。

https://blog.csdn.net/weixin_38391755/article/details/80380786

Makefile函数语法

$(function arguments)                          译作: $(函数名    参数列表)

Makefile字符串函数

1. subst

说明:字符替换函数,将字符串text中的from字符,完全替换成to。

语法:$(subst from,to,text)

示例:$(subst from ee,EE,feet on the street)

结果:fEEt on the strEEt

2. patsubst

说明:字符替换函数,将字符串text以空格为分格符,切分成单词,将满足匹配规则pattern的词替换成replacement。匹配符为%,若pattern中包含的常量字符包含%,需要用到转义字符 \

语法:$(patsubst pattern,replacement,text)

示例:$(patsubst %.c,%.o,main.c test.c)

结果:main.o test.o

3. strip

说明:去掉字符串text中头部和尾部的所有空字符,当text中,相邻两个字符间包含两个及以上的空字符,将去掉多余的空字符,只保留一个。这个函数对于判断包含空字符的字符串是否是空串。

语法:$(strip text)

示例:$(strip a b   c   )

结果:a b c

4. findstring

说明:在in中查找是否存在字符串find,如果存在则返回find,否则返回空字符。

语法:$(findstring find,in)

示例:$(findstring a,a b c)

结果:a

5. filter

说明:返回字符串text以空格为分隔符的满足匹配规则pattern的字符串列表。这里面的pattern可以为多个。

语法:$(filter pattern..., text)

示例:

sources=main.c test.m func.cpp

$(filter %.c %.m, $(sources))

结果:main.c test.m

6. filter-out

说明:是filter的相反操作,去掉text中不满足匹配规则pattern的字符串。

语法:$(filter-out pattern..., text)

示例:$(filter-out pattern,text)

sources=main.c test.m func.s

$(filter-out %.m %s,$(sources))

结果:main.c

7. sort

说明:将list中的字符串进行排序,并去掉重复出现的字符串。

语法:$(sort list)

示例:$(sort foo bar bar lose)

结果:bar foo lose

8. word

说明:返回text中的第n个字符串。

语法:$(word n,text)

示例:$(word 2,foo bar lose)

结果:bar

9. wordlist

说明:返回text中从第s个字符串到第e个字符串之间的所有字符串。

语法:$(wordlist s,e,text)

示例:$(wordlist 2,4,foo bar lose key)

结果:bar lose key

10. words

说明:返回text中的字符串数量。

语法:$(words text)

示例:$(words foo bar lose)

结果:3

11. firstword

说明:返回names中的第一个字符串,names以空格进行分隔。

语法:$(firstword names...)

示例:$(firstword foo bar lose)

结果:foo

12. lastword

说明:返回names中的最后一个字符串,names以空格进行分隔。

语法:$(lastword names...)

示例:$(lastword foo bar lose)

结果:lose

Makefile文件函数

待更新。。。。

02-27 14:01