浅显易懂 Makefile 入门 (05)— 字符串处理函数(patsubst、subst、strip、findstring、filter、filter-out、sort、word)

1. 字符串函数格式

函数调用的格式如下:

$(<function> <arguments>)

或者是

${<function> <arguments>}

其中,

  • function 是函数名;
  • arguments 是函数的参数,参数之间要用逗号分隔开;

而参数和函数名之间使用空格分开。

调用函数的时候要使用字符 $,后面可以跟小括号也可以使用花括号。

2. 模式字符串替换函数 patsubst

函数使用格式如下:

$(patsubst <pattern>,<replacement>,<text>)

函数说明:函数功能是查找 text 中的单词是否符合模式 pattern,如果匹配的话,则用 replacement 替换。返回值为替换后的新字符串。实例:

OBJ=$(patsubst %.cpp, %.o, 11.cpp 22.cpp 33.cpp)
all:
	echo $(OBJ)

执行 make 命令,

wohu@ubuntu:~/cpp/ifeq$ make
echo  11.o  22.o  33.o
11.o 22.o 33.o
wohu@ubuntu:~/cpp/ifeq$ 

3. 字符串替换函数 subst

函数使用格式如下:

$(subst <from>,<to>,<text>)

函数说明:函数的功能是把字符串中的 form 替换成 to,返回值为替换后的新字符串。实例:

OBJ=$(subst oo,ss, faoo fcoo )
all:
	echo $(OBJ)

执行 make 命令,

wohu@ubuntu:~/cpp/func$ make
echo  fass fcss 
fass fcss
wohu@ubuntu:~/cpp/func$ 

4. 去空格函数 strip

函数使用格式如下:

$(strip <string>)

函数说明:函数的功能是去掉字符串的开头和结尾的字符串,并且将其中的多个连续的空格合并成为一个空格。返回值为去掉空格后的字符串。实例:

OBJ=$(strip  a   b   c    )
all:
	echo $(OBJ)

执行完 make 命令

wohu@ubuntu:~/cpp/func$ make
echo a b c
a b c
wohu@ubuntu:~/cpp/func$ 

5. 查找字符串函数 findstring

函数使用格式如下:

$(findstring <find>,<in>)

函数说明:函数的功能是查找 in 中的 find ,如果我们查找的目标字符串存在。返回值为目标字符串,如果不存在就返回空。实例:

OBJ=$(findstring  is, it is dog)
all:
	echo $(OBJ)

执行 make 命令,

wohu@ubuntu:~/cpp/func$ make
echo is
is
wohu@ubuntu:~/cpp/func$ 

6. 过滤函数 filter

函数使用格式如下:

$(filter <pattern>,<text>)

函数说明:函数的功能是过滤出 text 中符合模式 pattern 的字符串,可以有多个 pattern 。返回值为过滤后的字符串。实例:

OBJ=$(filter  %.cpp %.o, a.cpp b.o c.txt)
all:
	echo $(OBJ)

执行 make 命令,

wohu@ubuntu:~/cpp/func$ make
echo a.cpp b.o
a.cpp b.o
wohu@ubuntu:~/cpp/func$ 

7. 反过滤函数 filter-out

函数使用格式如下:

$(filter-out <pattern>,<text>)

函数说明:函数的功能是功能和 filter 函数正好相反,但是用法相同。

去除符合模式 pattern 的字符串,保留符合的字符串。返回值是保留的字符串。实例:

OBJ=$(filter-out  %.cpp %.o, a.cpp b.o c.txt)
all:
	echo $(OBJ)

执行 make 命令,

wohu@ubuntu:~/cpp/func$ make
echo c.txt
c.txt
wohu@ubuntu:~/cpp/func$ 

8. 排序函数 sort

函数使用格式如下:

$(sort <list>)

函数说明:函数的功能是将 list 中的单词排序(升序)。返回值为排列后的字符串。实例:

OBJ=$(sort  z, y, y, x)
all:
	echo $(OBJ)

执行 make 命令,

wohu@ubuntu:~/cpp/func$ make
echo x y, z,
x y, z,
wohu@ubuntu:~/cpp/func$ 

sort 会去除重复的字符串。

9. 取单词函数 word

函数使用格式如下:

$(word <n>,<text>)

函数说明:函数的功能是取出函数 text 中的第 n 个单词。返回值为我们取出的第 n 个单词。实例:

OBJ=$(word  3, a.cpp, b.cpp, c.cpp)
all:
	echo $(OBJ)

执行 make 命令,

wohu@ubuntu:~/cpp/func$ make
echo c.cpp
c.cpp
wohu@ubuntu:~/cpp/func$ 

猜你喜欢

转载自blog.csdn.net/wohu1104/article/details/111024600