Makefile函数详解: subst与patsubst
需积分: 12 84 浏览量
更新于2024-09-09
收藏 190KB PDF 举报
"Makefile函数使用详解"
在Makefile中,函数是进行复杂文本操作和构建规则的关键元素。虽然Makefile支持的函数不多,但它们非常实用,可以帮助编写出更简洁、高效的构建脚本。以下是关于Makefile中两种主要字符串处理函数——`subst`和`patsubst`的详细介绍:
1. 字符串替换函数 —— `subst`
`$(subst <from>,<to>,<text>)` 这个函数用于在文本 `<text>` 中将所有出现的 `<from>` 字符串替换为 `<to>`。例如,如果你有一个字符串 "feetonthestreet" 并想将所有的 "ee" 替换为 "EE",你可以这样写:
```
result := $(subst ee,EE,feetonthestreet)
```
上述代码将返回 "fEEtonthestrEEt"。
2. 模式字符串替换函数 —— `patsubst`
`$(patsubst <pattern>,<replacement>,<text>)` 这个函数会遍历 `<text>` 中的所有单词,检查它们是否匹配模式 `<pattern>`。如果匹配,单词会被 `<replacement>` 替换。这里的 `<pattern>` 可以包含通配符 `%`,它代表任意长度的字符串。如果 `<replacement>` 也包含 `%`,那么这个 `%` 将对应于 `<pattern>` 中的 `%` 所代表的字符串。要表示实际的百分号 `%`,需要使用 `\%` 进行转义。
例如,假设你有一个字符串 "x.c.cbar.c",你想将所有以 ".c" 结尾的单词替换为 ".o",你可以这样写:
```
result := $(patsubst %.c,%.o, x.c.cbar.c)
```
这将返回 "x.c.obar.o"。
`patsubst` 与之前在变量章节中提到的变量替换类似。例如,`$(var:<pattern>=<replacement>)` 可以等同于 `$(patsubst <pattern>,<replacement>,$(var))`,而 `$(var:<suffix>=<replacement>)` 则等同于 `$(patsubst %<suffix>,%<replacement>,$(var))`。
假设你有一个变量 `sources := x.c y.c z.c`,并且你想将所有以 ".c" 结尾的源文件转换为相应的 ".o" 文件,你可以这样写:
```
objects := $(patsubst %.c,%.o,$(sources))
```
这将返回 "x.o y.o z.o"。
掌握这些字符串处理函数对于编写高效且灵活的Makefile至关重要。它们允许你在构建过程中进行复杂的文本操作,比如自动生成依赖关系,或者根据源文件的后缀生成目标文件名。通过熟练使用这些函数,可以使Makefile更加智能化,减少手动配置的工作量,提高自动化构建的效率。
2024-01-10 上传
2020-02-23 上传
2023-08-18 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
2023-06-10 上传
点击了解资源详情
py_free-物联智能
- 粉丝: 3w+
- 资源: 69
最新资源
- 前端协作项目:发布猜图游戏功能与待修复事项
- Spring框架REST服务开发实践指南
- ALU课设实现基础与高级运算功能
- 深入了解STK:C++音频信号处理综合工具套件
- 华中科技大学电信学院软件无线电实验资料汇总
- CGSN数据解析与集成验证工具集:Python和Shell脚本
- Java实现的远程视频会议系统开发教程
- Change-OEM: 用Java修改Windows OEM信息与Logo
- cmnd:文本到远程API的桥接平台开发
- 解决BIOS刷写错误28:PRR.exe的应用与效果
- 深度学习对抗攻击库:adversarial_robustness_toolbox 1.10.0
- Win7系统CP2102驱动下载与安装指南
- 深入理解Java中的函数式编程技巧
- GY-906 MLX90614ESF传感器模块温度采集应用资料
- Adversarial Robustness Toolbox 1.15.1 工具包安装教程
- GNU Radio的供应商中立SDR开发包:gr-sdr介绍