浅显易懂 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$
浅显易懂 Makefile 入门 (05)— 字符串处理函数(patsubst、subst、strip、findstring、filter、filter-out、sort、word)相关推荐
- 3.模式字符串替换函数-patsubst
patsubst 1. 语法 2.示例 1. 语法 名称:模式字符串替换函数--patsubst. $(patsubst <pattern>,<replacement>,< ...
- 浅显易懂 Makefile 入门 (07)— 其它函数(foreach 、if、call、origin )
1. foreach 函数 foreach 函数定义如下: $(foreach <var>,<list>,<text>) 函数的功能是:把参数 <list&g ...
- 浅显易懂 Makefile 入门 (06)— 文件名操作函数(dir、notdir、suffix、basename、addsuffix、addperfix、join、wildcard)
编写 Makefile 的时候,很多情况下需要对文件名进行操作.例如获取文件的路径,去除文件的路径,取出文件前缀或后缀等等. 注意:下面的每个函数的参数字符串都会被当作或是一个系列的文件名来看待. 1 ...
- 浅显易懂 Makefile 入门 (12)— Makefile 常见的错误信息
1. 常见的错误信息 make 执行过程中所产生错误并不都是致命的,特别是在命令行之前存在 -.或者 make 使用 -k 选项执行时. make 执行过程的致命错误都带有前缀字符串 ***.错误信息 ...
- 浅显易懂 Makefile 入门 (01)— 什么是Makefile、为什么要用Makefile、Makefile规则、Makefile流程如何实现增量编译
1. 什么是 Makefile Makefile 文件描述了 Linux 系统下 C/C++ 工程的编译规则,它用来自动化编译 C/C++ 项目.一旦写编写好 Makefile 文件,只需要一个 ma ...
- 浅显易懂 Makefile 入门 (09)— include 文件包含、MAKECMDGOALS
1. include文件包含 当 make 读取到 include 关键字的时候,会暂停读取当前的 Makefile,而是去读 include 包含的文件,读取结束后再继读取当前的 Makefile ...
- 浅显易懂 Makefile 入门 (08)— 默认 shell (/bin/sh)、命令回显、make参数(-n 只显示命令但不执行,-s 禁止所有回显)、单行命令、多行命令、并发执行
1. shell 相关 1.1 默认 shell Makefile 所使用的命令是由 shell 命令行组成,他们是一条一条执行的. 多个命令之间要使用分号隔开,Makefile 中的任何命令都要以 ...
- 浅显易懂 Makefile 入门 (10)— 嵌套执行 make、export 的使用
1. 嵌套执行 make 在一个大的工程文件中,不同的文件按照功能被划分到不同的模块中,每个模块可能都会有自己的编译顺序和规则,如果在一个 Makefile 文件中描述所有模块的编译规则,就会很乱,执 ...
- 浅显易懂 Makefile 入门 (03)— 目标文件搜索(VPATH 和 vpath 的区别和使用)、隐含规则
1. 目标文件搜索(VPATH和vpath) 如果需要的文件是存在于不同的路径下(即源文件与 Makefile 文件不在同一个路径下),在编译的时候就用到了 Makefile 中为我们提供的目录搜索文 ...
最新文章
- 奔四的技术人,内心都有哪些波澜?
- Programming Computer Vision with Python (学习笔记八)
- iframe嵌套页面 跨域_跨域解决方案
- ssm(Spring+Spring mvc+mybatis)Spring配置文件——applicationContext.xml
- docker导入与导出容器
- 5G/NR 学习笔记:波束赋形 / beam 管理
- 2021年8月下旬好文收藏
- vue多页面开发_使用VUE进行移动端H5页面开发前准备
- 【BZOJ】4152: [AMPPZ2014]The Captain【SLF优化Spfa】
- 周鸿祎:做产品体验先把自己切换到二傻子模式
- 团队作业4——第一次项目冲刺(Alpha版本)2017.4.24
- 【算法学堂】字符串基础算法
- 五款优秀的端口扫描工具
- html怎么显示五线谱,教你一个怎么看五线谱的绝招!
- java-家庭作业2
- Java-茴香豆研究(一)
- 保持健康和活力 - 颈椎病康复指南
- PHP 合成图片并在图片上加文字
- noip2014 珠心算测验 (枚举)
- 如何计算每个月有多少天