Makefile函数详解:灵活构建你的工程
需积分: 27 39 浏览量
更新于2024-09-09
收藏 65KB DOC 举报
"Makefile中常用的函数包括 subst 和 patsubst,它们是进行字符串处理的重要工具。 subst 函数用于将指定的子字符串在给定的字符串中替换为另一个子字符串,而 patsubst 函数则是一个模式匹配的替换函数,能够根据模式对字符串列表中的单词进行替换。下面详细介绍这两个函数。
subst 函数:
subst 函数的语法是 `$(subst from,to,text)`。`from` 是要被替换的子字符串,`to` 是替换后的字符串,而 `text` 是包含 `from` 的原始字符串。函数会遍历 `text` 中的所有 `from` 子串,并将其替换为 `to`。例如,`$(subst space,comma,abc def ghi)` 将把空格替换为逗号,结果变为 "abc,def,ghi"。
patsubst 函数:
patsubst 函数的语法是 `$(patsubst pattern,replacement,list)`。`pattern` 是一个模式,`replacement` 是替换字符串,`list` 是一个单词列表。`pattern` 中可以包含通配符 `%`,它匹配任何非空字符序列。当 `list` 中的单词匹配 `pattern` 时,`%` 被单词的匹配部分替换,然后整个单词被替换为 `replacement`。例如,`$(patsubst %.c,%.o,foo.c bar.c baz.c)` 将把所有 ".c" 后缀的单词替换为 ".o",结果为 "foo.o bar.o baz.o"。
除此之外,Makefile 还提供了其他有用的函数,如 `findstring`(查找字符串是否存在于列表中),`filter` 和 `filter-out`(筛选列表中的单词),`join`(合并两个列表),`word` 和 `words`(提取列表中的单词或计数),以及 `firstword`(获取列表的第一个单词)等。
例如:
- `$(findstring target, list)` 检查 `target` 是否在 `list` 中,如果存在,返回 `target`,否则为空。
- `$(filter pattern, list)` 返回 `list` 中匹配 `pattern` 的所有单词。
- `$(filter-out pattern, list)` 返回 `list` 中不匹配 `pattern` 的所有单词。
- `$(join list1, list2)` 将 `list1` 和 `list2` 合并成一个新的列表,相邻元素间用空格分隔。
- `$(word N, list)` 返回 `list` 的第 N 个单词(从1开始计数)。
- `$(words list)` 返回 `list` 中的单词总数。
- `$(firstword list)` 只返回 `list` 的第一个单词。
这些函数在编写复杂的 Makefile 规则和自动化构建脚本时非常有用,它们使得 Makefile 更具灵活性和可读性,可以根据不同的条件和模式执行不同的构建操作。熟练掌握这些函数,能够帮助你编写出更加高效和定制化的构建系统。
2021-09-18 上传
2013-05-01 上传
2023-08-13 上传
点击了解资源详情
点击了解资源详情
2023-04-05 上传
2012-08-03 上传
点击了解资源详情
点击了解资源详情
qingfeng623
- 粉丝: 20
- 资源: 19
最新资源
- C语言数组操作:高度检查器编程实践
- 基于Swift开发的嘉定单车LBS iOS应用项目解析
- 钗头凤声乐表演的二度创作分析报告
- 分布式数据库特训营全套教程资料
- JavaScript开发者Robert Bindar的博客平台
- MATLAB投影寻踪代码教程及文件解压缩指南
- HTML5拖放实现的RPSLS游戏教程
- HT://Dig引擎接口,Ampoliros开源模块应用
- 全面探测服务器性能与PHP环境的iprober PHP探针v0.024
- 新版提醒应用v2:基于MongoDB的数据存储
- 《我的世界》东方大陆1.12.2材质包深度体验
- Hypercore Promisifier: JavaScript中的回调转换为Promise包装器
- 探索开源项目Artifice:Slyme脚本与技巧游戏
- Matlab机器人学习代码解析与笔记分享
- 查尔默斯大学计算物理作业HP2解析
- GitHub问题管理新工具:GIRA-crx插件介绍