Makefile深入解析:目标变量与局部赋值
需积分: 50 12 浏览量
更新于2024-08-10
收藏 964KB PDF 举报
"《目标变量-算法引论:一种创造性方法》高清版,作者:陈皓,整理者:祝冬华,主要讲解了Makefile的相关知识,包括目标变量的使用和Makefile的基本结构与规则。"
在Makefile编程中,目标变量(Target-specific Variable)是一个重要的概念。它允许我们在特定的构建目标上设置局部变量,这些变量只在当前规则及其相关的连带规则中有效,不会影响全局变量的值。这样设计提高了Makefile的灵活性和可定制性。
目标变量的定义语法如下:
```makefile
<target ...> : <variable-assignment>
<target ...> : override <variable-assignment>
```
其中,`<target ...>` 是你想要指定的目标文件,`<variable-assignment>` 可以是各种赋值表达式,例如 "="、":="、"+=" 或 "?="。`override` 关键字用于覆盖通过命令行或环境变量传递的同名变量。
例如,如果你想在构建`prog`目标时增加调试标志,你可以这样设置:
```makefile
prog : CFLAGS = -g
prog : prog.o foo.o bar.o
$(CC) $(CFLAGS) prog.o foo.o bar.o
prog.o : prog.c
$(CC) $(CFLAGS) prog.c
```
在这个例子中,`CFLAGS` 在构建`prog`及其依赖时被临时设置为 "-g",仅在构建`prog`的过程中有效,不影响其他规则中`CFLAGS`的值。
Makefile的基本结构包含显式规则、隐晦规则、变量定义、文件指示和注释等。显式规则指定了如何从依赖文件构建目标文件,而隐晦规则是预定义的一些通用规则。变量在Makefile中起着核心作用,它们可以存储命令、文件名或编译选项等,简化Makefile的编写。通过使用变量,我们能避免代码重复,并方便地更改整个构建过程的配置。
`make`工具会根据Makefile中的规则来决定哪些文件需要重新编译。它会自动推导源文件和目标文件之间的依赖关系,但也可以通过显式声明依赖性来精确控制构建流程。此外,Makefile支持使用通配符(*)来匹配一组文件,以及通过伪目标(如`.PHONY`)来指示那些不需要实际文件的目标。
书写命令时,可以使用显式命令显示执行过程,也可以通过错误处理和嵌套`make`调用来控制构建流程。变量的使用包括基础赋值、变量中的变量、追加值、覆盖原有值等功能,使得Makefile更加灵活。
条件判断和函数在Makefile中提供了更复杂的逻辑处理能力。条件判断可以基于不同的条件执行不同的命令或规则,而函数则可以对字符串和文件名进行操作,增强Makefile的处理能力。
理解和熟练运用目标变量是编写高效Makefile的关键之一,它使得构建过程可以根据不同目标进行定制,提高了软件构建的灵活性和可维护性。
2656 浏览量
2018-08-20 上传
161 浏览量
168 浏览量
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
物联网_赵伟杰
- 粉丝: 46
- 资源: 3957
最新资源
- 正整数数组验证库:确保值符合正整数规则
- 系统移植工具集:镜像、工具链及其他必备软件包
- 掌握JavaScript加密技术:客户端加密核心要点
- AWS环境下Java应用的构建与优化指南
- Grav插件动态调整上传图像大小提高性能
- InversifyJS示例应用:演示OOP与依赖注入
- Laravel与Workerman构建PHP WebSocket即时通讯解决方案
- 前端开发利器:SPRjs快速粘合JavaScript文件脚本
- Windows平台RNNoise演示及编译方法说明
- GitHub Action实现站点自动化部署到网格环境
- Delphi实现磁盘容量检测与柱状图展示
- 亲测可用的简易微信抽奖小程序源码分享
- 如何利用JD抢单助手提升秒杀成功率
- 快速部署WordPress:使用Docker和generator-docker-wordpress
- 探索多功能计算器:日志记录与数据转换能力
- WearableSensing: 使用Java连接Zephyr Bioharness数据到服务器