Makefile深入解析:目标变量与环境变量
需积分: 48 189 浏览量
更新于2024-08-09
收藏 478KB PDF 举报
"这篇文档是《跟我一起写Makefile》PDF重制版的一部分,由陈皓撰写,介绍了Makefile的编写和使用。内容涵盖了Makefile的基本概念、规则、变量使用、命令书写、条件判断和函数应用等多个方面。"
在Makefile的编写中,环境变量和目标变量是两个重要的概念。
环境变量在Makefile中的使用允许我们设置通用的编译参数,例如`CFLAGS`。当Makefile运行时,如果在系统环境中定义了`CFLAGS`,这个变量的值会被所有Makefile使用,除非Makefile内部重新定义了该变量。如果使用`-e`选项启动`make`,则系统环境变量会覆盖Makefile中的定义。在嵌套调用Makefile时,上层Makefile定义的变量可以通过环境变量传递给下层,但需要使用`export`关键字。然而,过多地依赖环境变量可能造成不同Makefile之间配置冲突的问题。
目标变量(Target-specific Variables)是Makefile的一个高级特性,允许为特定的目标设定局部变量。这样的变量只在定义的规则及其连带规则中有效,不会影响其他全局变量。定义目标变量的语法如下:
```
<target ...> : <variable-assignment>;
<target ...> : override <variable-assignment>
```
例如,可以为`prog`目标指定`CFLAGS`变量:
```
prog : CFLAGS = -g
prog : prog.o foo.o bar.o
$(CC) $(CFLAGS) prog.o foo.o bar.o
```
在这个例子中,`-g`只在构建`prog`时启用,不会影响其他规则对`CFLAGS`的使用。
Makefile的基本结构包括规则、变量和命令。规则定义了目标文件如何由依赖文件生成,变量则用来存储常量和动态计算值,命令用于描述执行的操作。Makefile还支持自动化变量,如`$<`代表第一个依赖目标,以及模式规则,用于匹配和处理一组相似的文件。
此外,Makefile还可以利用条件判断和内置函数进行更复杂的逻辑控制和字符串、文件路径的处理。理解并熟练运用这些概念和技巧,能帮助开发者编写出高效且易于维护的Makefile,提高软件构建的自动化程度。
129 浏览量
点击了解资源详情
点击了解资源详情
2021-10-01 上传
2021-12-01 上传
2023-09-04 上传
2021-05-25 上传
2023-12-29 上传
半夏256
- 粉丝: 19
- 资源: 3866
最新资源
- C语言快速排序算法的实现与应用
- KityFormula 编辑器压缩包功能解析
- 离线搭建Kubernetes 1.17.0集群教程与资源包分享
- Java毕业设计教学平台完整教程与源码
- 综合数据集汇总:浏览记录与市场研究分析
- STM32智能家居控制系统:创新设计与无线通讯
- 深入浅出C++20标准:四大新特性解析
- Real-ESRGAN: 开源项目提升图像超分辨率技术
- 植物大战僵尸杂交版v2.0.88:新元素新挑战
- 掌握数据分析核心模型,预测未来不是梦
- Android平台蓝牙HC-06/08模块数据交互技巧
- Python源码分享:计算100至200之间的所有素数
- 免费视频修复利器:Digital Video Repair
- Chrome浏览器新版本Adblock Plus插件发布
- GifSplitter:Linux下GIF转BMP的核心工具
- Vue.js开发教程:全面学习资源指南