Makefile学习总结之Make的内嵌函数

Make的内嵌函数

  1. 函数等额调用格式类似于变量的引用,以“$”开始表示一个引用。语法格式如下:
$(FUNCTION ARGUMENTS)

或者:

 ${FUNCTION ARGUMENTS}

对于函数调用的格式有以下几点说明:
a) 调用语法格式中,“FUNCTION”是需要调用的函数名,它应该时make内嵌的函数名。对于用户自己的函数需要通过make的“call”函数来间接调用。
b) “ARGUMENTS”是函数的参数,参数和函数名之间使用若干个空格或者[Tab]字符分割。如果存在多个参数时,用“,”分开;
c) 以“$”开头,使用成对的圆括号或花括号把函数名和参数括起(在 Makefile中,圆括号和花括号在任何地方必须成对出现)。
d) 函数处理参数时,参数中如果存在对其它变量或者函数的引用,首先对这些引用进行展开得到参数的实际内容。而后才对它们进行处理。参数的展开顺序是按照参数的先后顺序来进行的。
e) 书写时,函数的参数不能出现逗号“,”和空格。这是因为逗号被作为多个参数的分隔符,前导空格会被忽略。

$(subst FROM,TO,TEXT)

函数名称:字符串替换函数——subst。
函数功能:把字串“TEXT”中的“FROM”字符替换成“TO”;
返回值:替换后的新字符串;

$(subst ee,EE,feet on the street)

替换“feet on the street”中的“ee”为“EE”,结果得到字符串“fEEt on the strEEt”。
3.

$(patsubst PATTERN,REPLACEMENT,TEXT)

函数名称:模式替换函数——patsubst。
函数功能:搜素“TEXT”中以空格分开的单词,将符合模式“TATTERN”替换为“PEPLACEMENT”。参数“PATTERN”中可以使用模式通配符“%”来代表一个单词中的若干字符。如果参数“REPLACEMENT”中也包含一个“%”,如果参数“REPLACEMENT”中也包含一个“%”,那么“REPLACEMENT”中的“%”将是“TATTERN”中的那个“%”所代表的字符串。在“TATTERN”和“REPLACEMENT”
中,只有第一个“%”被作为模式字符来处理,之后出现的不再作模式字符(作为一个字符)。在参数中如果需要将第一个出现的“%”作为字符本身而不作为模式字符时,可使用反斜杠“\”进行转义处理。
返回值:替换后的新字符串
函数说明:参数“TEXT”单词之间的多个空格在处理时被合并成一个空格,并忽略前导和结尾空格。

$(patsubst %.c,%.o,x.c.c bar.c)

把字串“x.c.c bar.c”中以.c 结尾的单词替换成以.o 结尾的字符。函数的返回结果是“x.c.o bar.o”
4.

$(strip STRINT)

函数名称:去空格函数—strip。
函数功能:去掉字串(若干单词,使用若干空字符分割)“STRINT”开头和结尾的空字符,并将其中多个连续空字符合并为一个空字符。
返回值:无前导和结尾空字符、使用单一空格分割的多单词字符串。
函数说明:空字符包括空格、[Tab]等不可显示字符。

STR = a b c 
LOSTR = $(strip $(STR)) 

结果是“a b c”。

$(findstring FIND,IN)

函数名称:查找字符串函数—findstring。
函数功能:搜索字串“IN”,查找“FIND”字串。
返回值:如果在“IN”之中存在“FIND”,则返回“FIND”,否则返回空。
函数说明:字串“IN”之中可以包含空格、[Tab]。搜索需要是严格的文本匹配。

$(findstring a,a b c) 
$(findstring a,b c) 

第一个函数结果是字“a”;第二个值为空字符。

发布了39 篇原创文章 · 获赞 13 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43443900/article/details/103372914