Makefile函数语法详解: subst与patsubst
版权申诉
145 浏览量
更新于2024-09-07
收藏 313KB PDF 举报
"该PDF文件主要总结了Makefile中的常用函数语法,特别是关于字符串处理的函数,如`$(subst)`和`$(patsubst)`。"
在Makefile编程中,函数的应用极大地增强了其灵活性和智能化,使得构建过程更加高效。Makefile支持的函数虽然不多,但足以满足大部分需求。函数调用通常以`$()`或`${}`形式表示,函数名与参数间以空格分隔,参数之间则用逗号分隔。
首先,我们来看一个基础示例,展示了如何使用函数。在这个例子中,定义了几个变量:`comma`赋值为逗号,`space`通过两个`empty`定义为空格,`foo`赋值为"abc",`bar`则是通过`$(subst $(space),$(comma),$(foo))`定义的。这里的`$(subst)`函数用于替换字符串,它接受三个参数:第一个是要查找并替换的子串,第二个是替换后的子串,第三个是进行替换操作的原始字符串。因此,`$(bar)`的值将"abc"中的空格替换为逗号,结果为"a,b,c"。
接下来,我们深入讨论两种字符串处理函数:
1. **$(subst,,)**:这是一个基本的字符串替换函数。例如,`$(subst ee,EE,feetonthestreet)`会将字符串"feetonthestreet"中的所有"ee"替换为"EE",返回结果为"fEEtonthestrEEt"。此函数不考虑单词边界,会全局替换指定的子串。
2. **$(patsubst,,)**:模式字符串替换函数。它允许使用通配符"%"进行更复杂的替换。`patsubst`函数查找字符串中的单词,如果单词匹配给定的模式,就用替换字符串替换它。这里的"%"是一个占位符,表示任意长度的字符串。例如,`$(patsubst %.c,%.o,foo.c bar.c baz.c)`会将".c"扩展为".o",如果单词以".c"结尾,返回"foo.o bar.o baz.o"。如果模式或替换字符串中也包含"%",则需要使用反斜杠"\%"来转义,确保正确匹配。
这两个函数在Makefile中处理文件名转换、路径调整等场景时非常有用。通过它们,我们可以方便地对变量中的字符串进行操作,以适应构建过程中的各种需求。
在编写Makefile时,了解并熟练运用这些函数可以提高Makefile的可读性和维护性。合理使用函数可以使Makefile的规则和命令更加简洁、灵活,避免硬编码,降低出错的可能性。因此,掌握Makefile的函数语法是编写高效Makefile的关键步骤之一。
点击了解资源详情
605 浏览量
550 浏览量
108 浏览量
137 浏览量
1481 浏览量
2021-10-11 上传
2021-11-04 上传
134 浏览量
我慢慢地也过来了
- 粉丝: 1w+
最新资源
- Satoyama API:简便的RESTful接口助力传感器数据收集
- MATLAB实现的虚拟键盘:图像处理技术应用
- MFC串口控件MSCOMM注册使用指南
- Wux Weapp:微信小程序界面组件库的快速上手指南
- 易语言实现BMP转ICO功能模块源码解析
- 拓扑排序实验——数据结构课程实践
- Shell脚本压缩包解压与管理方法
- 探索teknine.com网站:开源与BSD许可证的优势
- 前端课程第3-4节HTML要点总结
- C语言实现常数时间字符串拼接的CordLab二叉树结构
- Matlab工作流增强:编辑功能的超链接化
- Java编程框架达多斯深入解析
- LayUI表格刷新不重置页码问题解决方法
- Java类文件反编译利器:jd-gui工具使用详解
- FatecSãoJosé教授分享数字化设计专业知识
- Python库twitchAPI-2.2.0版本发布详情