Makefile进阶:变量高级用法与技巧
需积分: 48 127 浏览量
更新于2024-08-09
收藏 478KB PDF 举报
"本文档是关于Makefile的详细教程,主要涵盖了变量的高级用法,包括变量值的替换。在Makefile中,可以使用“$(var:a=b)”或“${var:a=b}”的格式来替换变量“var”中所有以“a”字符串结尾的部分为“b”字符串。此外,文档还讨论了Makefile的规则、命令书写、变量使用、条件判断以及函数的运用等核心概念。"
在Makefile中,变量的高级用法是提升Makefile灵活性和可维护性的重要工具。其中,变量值的替换是一种关键技巧。例如,如果我们有一个变量`VAR = some-text-a`,我们想将所有以`-a`结尾的部分替换为`-b`,可以使用`$(VAR:-a=b)`或`${VAR:-a=b}`,这样`VAR`的值就会被更新为`some-text-b`。这里的"-a"是一个模式,表示匹配以"-a"和随后的空格或行结束符结尾的部分。
Makefile中的变量分为基础用法和高级用法。基础用法包括定义和引用变量,如`VAR = value`。变量中的变量允许嵌套引用,如`VAR1 = value1`, `VAR2 = $(VAR1)`,`VAR2`将包含`value1`的值。追加变量值是通过`+=`操作符实现的,如`VAR += more_value`,这会在VAR现有值的末尾添加`more_value`。
`override`指示符用于在Makefile或命令行中覆盖已经定义的变量。多行变量则可以通过反斜杠(`\)`)在行尾续行。环境变量可以直接在Makefile中使用,而目标变量和模式变量则分别与特定的目标文件和通配符模式关联。
条件判断允许根据特定条件执行不同的规则或命令,增强了Makefile的逻辑控制能力。Makefile中还有丰富的函数库,例如字符串处理函数`subst`用于替换字符串中的子串,`patsubst`可以对模式进行替换,`strip`去除字符串两端的空白,`findstring`查找字符串是否包含指定的子串,以及`filter`、`filter-out`、`sort`等用于筛选和排序的函数。
文件名操作函数如`dir`获取路径中的目录部分,`notdir`则提取文件名而不包括路径,`suffix`或`basename`用于处理文件扩展名和基名。这些函数在处理文件路径时非常实用。
总而言之,Makefile的变量高级用法及其相关功能提供了强大的构建自动化能力,使得开发者能够编写出更加智能和高效的构建脚本。理解和掌握这些知识对于任何涉及Makefile的项目都是至关重要的,尤其是对于软件开发和持续集成流程的优化。
1693 浏览量
点击了解资源详情
2021-10-01 上传
112 浏览量
2023-09-04 上传
2023-12-29 上传
潮流有货
- 粉丝: 36
- 资源: 3884
最新资源
- -ignite-template-corrigindo-o-codigo
- 初级java笔试题-earthshape:从天文观测重建地球形状的程序
- 店长的定位
- smzdm_checkin_daily:「什么值得买」自动签到脚本
- gleam_parser:Gleam中的解析器组合器库,深受elm-parser的启发
- Event-Organiser:一个Kotlin应用程序来组织您的活动
- 初级java笔试题-termite:终极实时策略
- Giá Hextracoin-crx插件
- utility-ThreadPool-ios:自1.2版以来,Lightstreamer的iOS客户端库使用的线程池和URL调度库
- GIS-colouring-graph-vertexes:一个 GIS 项目,其任务是实现一种算法,该算法使用相似矩阵为图形顶点着色
- AFC代码:马里兰大学量子内存实验的代码库
- Метки для учебника javascript.ru-crx插件
- 斑马官方驱动XP系统.rar
- tesseract_example:CPPAN的非常基本的Tesseract-OCR示例。 Cppan支持已终止。 请改用sw(cppan v2)。 更新的示例在这里
- OrigamiProject3
- django-mongodb-sample-login:使用Rest Freamework的Django mongodb示例应用程序