调用语法
格式:
$(FUNCTION ARGUMENTS)
或者:
${FUNCTION ARGUMENTS}
注意:
1. FUNCTION 是 makefile 内嵌的函数名
2. 用户自己的函数需要通过 call 函数来间接调用
3. ARGUMENTS 是函数的参数,参数和函数名之间使用空格分割,多个参数之间使用“,”分开
4. 函数处理参数时,参数中如果存在对其它变量或者函数的引用,首先按照参数的顺序对这些引用进行展开得到参数的实际内容,而后才对它们进行处理
5. 书写时,函数的参数不能出现逗号“,”和空格
文本处理
subset
$(subst FROM,TO,TEXT)
函数功能:把字串“TEXT”中的“FROM”字符替换为“TO”。
patsubset
$(patsubst PATTERN,REPLACEMENT,TEXT)
函数功能:搜索“TEXT”中以空格分开的单词,将符合模式“PTATTERN”的字符串替换为“REPLACEMENT”。
示例:
$(patsubst %.o,%.c,$(objects))
等价于:
$(objects:.o=.c)
strip
$(strip STRINT)
函数功能:去掉字串开头和结尾的空字符,并将其中多个连续空字符合并为一个空字符。
findstring
$(findstring FIND,IN)
函数功能:搜索字串“IN”,查找“FIND”字串。
filter
$(filter PATTERN...,TEXT)
函数功能:返回字串“TEXT”中所有符合模式“PATTERN”的单词。存在多个模式时,模式表达式之间使用空格分割。
filter-out
$(filter-out PATTERN...,TEXT)
函数功能:和“filter”函数意义相反。
sort
$(sort LIST)
函数功能:将字符串以升序排序,并去掉重复的单词。
word
$(word N,TEXT)
函数功能:取字串“TEXT”中第“N”个单词(“N”的值从 1 开始)。
wordlist
$(wordlist S,E,TEXT)
函数功能:从字串“TEXT”中取出从“S”开始到“E”的单词串。“S”和“E”表示单词在字串中位置的数字(从1开始)。
words
$(words TEXT)
函数功能:字算字串“TEXT”中单词的数目。
firstword
$(firstword NAMES...)
函数功能:取字串“NAMES…”中的第一个单词。
文件名处理函数
dir
$(dir NAMES...)
函数功能:从文件名序列“NAMES…”中取出各个文件名的目录部分。
nodir
$(notdir NAMES...)
函数功能:从文件名序列“NAMES…”中取出非目录部分。
suffix
$(suffix NAMES...)
函数功能:从文件名序列“NAMES…”中取出各个文件名的后缀。
basename
$(basename NAMES...)
函数功能:从文件名序列“NAMES…”中取出各个文件名的前缀部分。
addsuffix
$(addsuffix SUFFIX,NAMES...)
函数功能:为“NAMES…”中的每一个文件名添加后缀“SUFFIX”。
addprefix
$(addprefix PREFIX,NAMES...)
函数功能:为“NAMES…”中的每一个文件名添加前缀“PREFIX”。
join
$(join LIST1,LIST2)
函数功能:将字串“LIST1”和字串“LIST2”各单词进行对应连接。
wildcard
$(wildcard PATTERN)
函数功能:列出当前目录下所有符合模式“PATTERN”格式的文件名。
foreach 函数
$(foreach VAR,LIST,TEXT)
函数功能:将字符串组“LIST”中的字符串依次赋给“VAR”,然后在执行时,如果表达式“TEXT”中存在变量“VAR”,则将其带入表达式“TEXT”中参与执行。
if 函数
$(if CONDITION,THEN-PART[,ELSE-PART])
函数功能:
如果“CONDITION”的展开结果非空,则条件为真,则将第二个参数“THEN_PATR”作为函数的计算表达式。如果“CONDITION”的展开结果为空,则将第三个参数“ELSE-PART”作为函数的表达式。
call 函数
$(call VARIABLE,PARAM,PARAM,...)
函数功能:对用户自己定义的函数进行引用。VARIABLE 被展开, $(1) 作为第一个参数,$(2) 作为第二个参数。依此类推。$(0)代表变量 VARIABLE 本身。