理解Makefile:变量中的变量与递归扩展
需积分: 50 107 浏览量
更新于2024-08-10
收藏 964KB PDF 举报
"变量中的变量-算法引论:一种创造性方法---高清版"
在Makefile编程中,变量的使用是至关重要的。变量允许我们存储和复用配置信息,提高代码的可读性和可维护性。本资源主要探讨了两种在Makefile中定义变量的机制以及它们的优缺点。
首先,介绍的是基本的赋值方式,即使用等号“=”进行赋值。这种方式允许我们用已有的变量值来构建新的变量。例如:
```makefile
foo = $(bar)
bar = $(ugh)
ugh = Huh?
```
在这个例子中,`foo`的最终值将是`Huh?`,因为Makefile会递归地解析变量。虽然这种递归赋值在某些场景下是有用的,例如延迟变量的计算,如`CFLAGS = $(include_dirs) -O`,其中`include_dirs`可以在稍后定义。然而,它也存在风险,比如可能导致无限递归(如`A = $(B)`和`B = $(A)`),并且当在变量值中使用函数(如`wildcard`和`shell`)时,可能会导致性能问题和不可预测的结果。
为了避免这些问题,Makefile提供了另一种赋值操作符“:=”,也称为即时赋值或静态赋值。使用“:=”时,变量的值会在赋值时立即计算,而不是在使用时展开。这有助于避免无限递归和性能问题,例如:
```makefile
CFLAGS := $(include_dirs) -O
include_dirs := -Ifoo -Ibar
```
在这种情况下,`CFLAGS`的值将只计算一次,不会因`include_dirs`的改变而改变。
Makefile的编写还包括了许多其他方面,如规则的定义、目标的编译和链接、自动推导依赖性、使用通配符、伪目标、多目标、静态模式规则等。此外,Makefile还支持条件判断和函数调用,提供了丰富的字符串和文件名处理功能,增强了Makefile的灵活性和功能性。
理解并熟练掌握Makefile中的变量用法是编写高效Makefile的关键,这有助于构建自动化构建流程,简化复杂的项目构建过程。通过合理使用变量、条件语句和函数,开发者能够编写出更加智能和适应性强的Makefile脚本。
480 浏览量
2018-08-20 上传
205 浏览量
2024-11-09 上传
273 浏览量
184 浏览量
230 浏览量
2024-11-09 上传
2024-11-09 上传
半夏256
- 粉丝: 20
最新资源
- 提升工作效率:300个Excel技巧精编
- ASP编程作业答案解析
- WindRiver Systems' Zinc Programmer's Guide: 6.0 Beta Edition
- Ruby语言入门教程:从零开始掌握
- GUI测试用例编写指南
- DOC命令大全:初学者必备指南
- ArcGIS9 Toolbox中英文对照详解:关键3D分析与绘图工具
- 华为编程规范:提升代码质量和可读性
- DB2 Connect 9.5: 服务器数据库入门指南
- ExtJS2.0入门教程:打造富客户端应用
- iSCSI技术详解:从概念到应用
- 成都信息工程学院物业管理系统的设计与实现
- UVision3与Proteus7.1联调教程:DLL驱动实现完美协作
- C#编程入门教程:从零开始学C#
- Paton's Digital Electronics Fundamentals: A 1998 Guide
- Ubuntu中文系统手册:从基础到高级操作