常用函数
Makefile 常用函数语法:
1. abspath函数
语法格式:$(abspath names)
功能:该函数主要用于将names中的各路径转换成绝对路径,并将转换后的结果返回.
2. filter与filter-out函数
语法格式:$(filter < pattern…>,< text >) 与 $(filter-out < pattern…>,< text>)
功能:过滤函数与反过滤函数,返回符合条件模式(或者不符合条件模式)的字符串。
3. eval函数
语法格式:$(eval text)
功能:eval函数的存在使得Makefile具有动态语言的特征。eval函数使得make将再一次解析text语句。
4、patsubst函数
语法格式:$(patsubst pattern, replacement, text)
功能:查找< text >中的单词(单词以“空格”、“Tab”或“回车”“换行”分隔)是否符合模式< pattern >,如果匹配的话,则以< replacement >替换。这里,< pattern >可以包括通配符“%”,表示任意长度的字串。如果< replacement >中也包含“%”,那么,< replacement >中的这个“%”将是< pattern >中的那个“%”所代表的字串。(可以用“/”来转义,以“/%”来表示真实含义的“%”字符)
5、strip函数
语法格式:$(strip string)
功能:strip用于去除字符串首尾空格,并且将有多个空格(或者tab等)的相邻字符串之间缩减为一个空格。
STR = a b c
LOSTR = $(strip $(STR))
结果是“a b c”,“strip”函数经常用在条件判断语句的表达式中,确保表达式比较的可靠和健壮!
6、addsuffix 函数
功能:加后缀函数,用于把后缀加到函数中的每个单词后面,返回加过后缀的文件名序列。
示例:$(addsuffix .c,test)返回值是“test.c”。
7、addprefix 函数
功能:加前缀函数,用于把前缀加到函数中的每个单词前面,返回加过前缀的文件名序列。
示例:$(addprefix home/,jerry)返回值是“home/jerry”。
8. subst函数
语法格式:$(subst < before > ,< later >,< text >)
功能:字符串替换函数,将text字符串中的before字符串换成later字符串,并返回处理后的字符串。
9. findstring函数
语法格式:$(findstring < word>, < text >)
功能:字符串查找函数,在字符串text中查找word字符串,找到返回word字符串,否则返回空字串。
10. sort函数
语法格式:$(sort < List >)
功能:排序函数,按照升序给字符串List排序,并返回排序后的字符串,在返回的字符串中相同的字符串会被去掉。
11. word函数
语法格式:$(word < n >,< text >)
功能:取单词函数,取出text中的第n个单词并返回,当n比text中的单词数大时,返回空字符串。
12. wordllist函数
语法格式:$(wordlist < m >,< n >,< text >)
功能: 取单词串函数,m超过单词数量时,返回空字符串。
13. words函数
语法格式:$(words < text >)
功能:统计text中的单词数量,并返回。
示例:要取最后一个单词可以这样:$( word $(words < text >),< text >)
14. firstword函数
语法格式:$(firstword < text >)
功能:获取首单词函数
15. dir函数
语法格式:$(dir < names…> )
功能:取目录函数,从文件名序列中取目录,返回反斜杠"/ “之前的目录,如果没有”/ “那么返回”./ "
16. notdir函数
语法格式:$(notdir < names…>)
功能:取出非目录部分
17. suffix函数
语法格式:$(suffix < names…>)
功能:获取后缀函数
18. basename函数
语法格式:$(basename < names…>)
功能:获取前缀函数
19. join函数
语法格式:$(join < list1 >,< list2 >)
功能:连接函数,将list1和list2中的对应单词连接起来并返回。