Makefile函数
内置函数
所有的函数具有如下的形式:
$(function-name arg1[, argn])
1.call
$(call macro-name[, param1 ...])
call
是一个内置于make
的函数,call
会扩展它的第一个参数并把其余参数依次替换到出现$1
$2
…的地方。macro-name
可以是任意的宏或者变量。
2.filter filter-out
$(filter pattern ...,text)
$(filter-out pattern...,text)
filter
函数会将text
视为一系列被空格隔开的单词,与pattern
比较之后,接着会返回相符者。filter
可以接受多个(被空格隔开的)格式。格式必须是整个单词,才可以将相符的单词放到输出列表中。
模式中只可以包含一个%字符。如果模式中包含了额外的%字符,那么除了第一个字符都会被视为文字字符(literal character)。
filter-out
函数与filter刚好相反,用来选出与模式不相符的每个单词。
3.findstring
usage:`$(findstring string...,text)`
此函数将会在text
里搜索string
。如果该字符串被找到了,此函数就会返回string
;否则,他会返回空值。
注意:此函数返回的只是“搜索字符串”,而不是它所要找到的包含该字符串的单词。其次,“搜索字符串”无法包含通配符。
4.subst patsubst
$(subst search-string,replace-string,text)
$(patsubst search-pattern,replace-pattern,text)
引用替换:$(variable:serach=replace)
subst
是一个不具有通配符能力的搜索与替换函数。常被用来在文件名列表中将一个扩展名替换成另一个扩展名。
patsubst
具有通配符能力。照例,此处的模式只可以包含一个%字符。切记,search-pattern
必须与text
的整个值进行匹配。
引用替换可移植。其中search
可以是一个简单的字符串,如果是这样的话,只要该字符串出现在一个单词的末尾,就会被替换成replace
。此外,search
可以包含一个代表统配字符%,如果是这样的话,make
会依照patsub
的规则进行搜索和替换的操作。
5.words word firstword wordlist
$(words text)
$(word n,text)
$(firstword text)
$(wordlist start,end,text)
说明:words
返回text
中单词的数量
word
返回text
中的地n
各单词,第一个单词的编号是1.如果n
大于text
中单词个数,则返回空。
f