GNU make:目标指定变量详解

需积分: 50 47 下载量 17 浏览量 更新于2024-08-08 收藏 1.24MB PDF 举报
"GNU make中文手册ver-3.8" 在GNU Make中,目标指定变量(Target-specific Variable)是一种高级特性,允许为特定的目标设定不同的变量值,这些值只在该目标及其相关规则的上下文中有效。这种局部性确保了不同目标可以有不同的构建配置,而不影响其他目标。 设置目标指定变量的语法有两种形式: 1. `TARGET ... : VARIABLE-ASSIGNMENT` 2. `TARGET ... : override VARIABLE-ASSIGNMENT` 其中,`TARGET`是你要指定的规则的目标,`VARIABLE-ASSIGNMENT`是你想要分配给该目标的变量值。使用`override`关键字可以防止命令行或环境变量的定义覆盖目标指定的变量。 目标指定变量的特点包括: 1. 赋值方式灵活,可以使用`=`, `:=`, `+=`, 或 `?=`。 2. 不影响全局变量。即使Makefile中已有一个同名的全局变量,目标指定变量的定义也不会改变全局变量的值,仅对指定目标可见。 3. 优先级与全局变量相同。命令行定义或`-e`选项下的环境变量可以覆盖目标指定变量,除非使用`override`。 4. 它们与全局变量是独立的实体,可以在展开风格上有所不同。 5. 目标指定变量的作用域涵盖由该目标触发的所有规则。 例如: ```makefile prog : CFLAGS = -g prog : prog.o foo.o bar.o ``` 在这个例子中,无论全局`CFLAGS`如何定义,对于目标`prog`,`CFLAGS`将被设置为`-g`,影响到`prog`的编译过程。 理解这一特性对于编写复杂的Makefile至关重要,因为它使得构建过程可以根据目标的不同而有不同的配置,提高了灵活性和可维护性。在Makefile中,正确使用目标指定变量可以避免不必要的冲突,使构建过程更加可控。