[007-Makefile-笔记] Makefile的内嵌函数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/pengfei240/article/details/53769808

调用语法

格式:

$(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 本身。

猜你喜欢

转载自blog.csdn.net/pengfei240/article/details/53769808