理解Makefile中的目标指定变量-sse4.2命令集详解
需积分: 4 176 浏览量
更新于2024-08-09
收藏 4.21MB PDF 举报
"GNU make makefile 中文手册"
在Makefile编写过程中,理解并熟练使用目标指定变量(Target-specific Variable)是提升构建效率的关键。目标指定变量允许为特定的目标设定特定的变量值,使得构建过程更加灵活。以下是关于目标指定变量的详细说明:
1. 定义与作用范围:
- 目标指定变量通过`TARGET ... : VARIABLE-ASSIGNMENT`或`TARGET ... : override VARIABLE-ASSIGNMENT`语法设置,其中`TARGET`是目标文件名,`VARIABLE-ASSIGNMENT`是变量赋值表达式。
- 作用范围仅限于指定目标及其相关规则,不会影响其他目标。
2. 赋值方式:
- 变量赋值可以使用`=`(递归赋值)、`:=`(静态赋值)、`+=`(追加赋值)或`?=`(条件赋值)等赋值运算符。
3. 与全局变量的关系:
- 目标指定变量不会影响全局变量的值,即它们之间是独立的。对于其他未指定目标,全局变量的值仍然保持不变。
- 当命令行或环境变量定义了与目标指定变量同名的变量时,若无`override`指示符,目标指定变量的定义会被覆盖。
4. 优先级与覆盖:
- 命令行参数或`-e`选项指定的变量会覆盖目标指定变量,除非使用`override`来强化目标指定变量的定义。
5. 变量风格:
- 目标指定变量与全局变量在展开风格上可以不同,可以独立设置为递归展开或直接展开。
6. 影响范围:
- 目标指定变量的值会应用到由该目标触发的所有规则,例如,`prog : CFLAGS = -g`会确保在构建`prog`时使用`-g`标志。
7. 使用示例:
```make
prog : CFLAGS = -g
prog : prog.o foo.o bar.o
```
在这个例子中,不论Makefile中全局`CFLAGS`定义为何,构建`prog`时,`CFLAGS`将临时设置为`-g`。
8. 递归与非递归make:
- 目标指定变量在递归调用`make`时也适用,但作用范围限制在当前Makefile中指定的目标。
通过合理利用目标指定变量,开发者可以根据不同目标的特定需求定制构建过程,提高构建的灵活性和可维护性。在编写复杂的Makefile时,这一特性尤为重要,能够帮助避免全局变量的冲突,同时保持构建逻辑清晰。
2020-01-10 上传
2019-12-30 上传
2017-10-29 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情