Makefile中的变量嵌套与使用
需积分: 50 52 浏览量
更新于2024-08-07
收藏 632KB PDF 举报
"《跟我一起写Makefile》PDF重制版,作者:陈皓"
本文主要探讨了在Makefile中如何使用变量,特别是变量中的变量这一概念。在Makefile中,变量可以用来构造其他变量的值,这被称为变量的递归使用。例如,通过以下方式定义变量:
```makefile
foo = $(bar)
bar = $(ugh)
ugh = Huh?
```
当我们执行`make all`并打印`$(foo)`的值时,会得到`Huh?`。这是因为`$(foo)`的值是`$(bar)`,`$(bar)`的值是`$(ugh)`,而`$(ugh)`的值是`Huh?`。这种特性允许我们延迟变量的实际值的计算,使得Makefile更加灵活。
然而,递归定义也带来了一些潜在问题。例如,如果出现循环依赖,如`CFLAGS = $(CFLAGS) -O`或`A = $(B)`,`B = $(A)`,这将导致无限递归,从而造成错误。因此,在编写Makefile时,必须谨慎处理这样的情况,确保变量的定义不会形成循环依赖。
Makefile中的变量分为两种赋值方式:简单的等号`=`用于延时赋值,而双等号`==`则用于立即赋值(也称为静态赋值)。延时赋值意味着右侧的变量可以在定义左侧变量之后才定义,而立即赋值则会在定义时立即计算右侧的表达式。
此外,文章还介绍了其他关于Makefile的知识,包括makefile的规则、工作原理、变量的使用、自动推导依赖、静态模式规则、多目标、伪目标、命令的书写以及错误处理等。对于变量的高级用法,如追加变量值、覆盖(override)变量、多行变量、环境变量、目标变量和模式变量也有所涉及。条件判断和函数的使用也是Makefile编程中的重要部分,包括字符串处理函数和文件名操作函数,它们极大地提高了Makefile的灵活性和功能性。
理解并熟练运用Makefile中的变量,尤其是变量中的变量,是编写高效、可维护的Makefile的关键。通过合理使用变量和其高级特性,可以简化构建过程,提高自动化编译的效率。
175 浏览量
107 浏览量
108 浏览量
2009-09-18 上传
175 浏览量
2018-07-04 上传
2020-10-29 上传
2021-07-06 上传
点击了解资源详情
一土水丰色今口
- 粉丝: 23
- 资源: 3953
最新资源
- Android应用源码利用poi将内容填到word模板-IT计算机-毕业设计.zip
- mdi-es:材料设计图标导出为ES模块
- LocationSearch
- 行业文档-设计装置-一种利用浸胶纸作为过渡联接体的胶合板.zip
- ImageProcessingApp:使用流行的MVC架构的图像处理应用程序
- hideandseek:Hide & Seek 是一款开源的多人在线街机游戏,对抗两支捉迷藏者团队,玩法有趣快节奏。 项目已从 https 移出
- angular-first-app
- 数据库课程设计-家庭理财管理.zip
- MochaBabelCoverage:一个 Mocha 运行器,支持对包含 JSX 的文件运行 Mocha,并支持覆盖率报告
- 脑机接口BCI-eeglab安装包
- grantwforsythe.github.io
- 性能测试工具LoadRunner书籍(14本)目录知识点(思维导图加图).rar
- ArgRouter:为js函数添加重载功能
- 2D形状
- android应用源码合肥工业大学客户端源码-IT计算机-毕业设计.zip
- PdfFormFillerUTF-8:带有命令行或 WWW 界面的简单 PDF Form Filler 实用程序。-开源