目标变量

简介: 目标变量

前面我们所讲的在 Makefile 中定义的变量都是全局变量,在整个文件,我们都可以访问这些变量。当然,自动化变量除外,如 $< 等这种类量的自动化变量就属于规则型变量,这种变量的值依赖于规则的目标和依赖目标的定义。


当然,我也同样可以为某个目标设置局部变量,这种变量被称为 Target-specific Variable ,它可以和全局变量同名,因为它的作用范围只在这条规则以及连带规则中,所以其值也只在作用范围内有效。而不会影响规则链以外的全局变量的值。


其语法是:

<target ...> : <variable-assignment>;
<target ...> : overide <variable-assignment>点击复制复制失败已复制


<variable-assignment>; 可以是前面讲过的各种赋值表达式,如 =:=+= 或是 ?= 。第二个语法是针对于 make 命令行带入的变量,或是系统环境变量


这个特性非常的有用,当我们设置了这样一个变量,这个变量会作用到由这个目标所引发的所有的规则中去。如:

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
foo.o : foo.c
    $(CC) $(CFLAGS) foo.c
bar.o : bar.c
    $(CC) $(CFLAGS) bar.c点击复制复制失败已复制


在这个示例中,不管全局的 $(CFLAGS) 的值是什么,在 prog 目标,以及其所引发的所有规则中( prog.o foo.o bar.o 的规则), $(CFLAGS) 的值都是 -g

目录
相关文章
|
数据采集 存储 中间件
【 ⑭】Scrapy架构(组件介绍、架构组成和工作原理)
【 ⑭】Scrapy架构(组件介绍、架构组成和工作原理)
702 0
|
存储 Linux 数据安全/隐私保护
介绍个简单的命令 tar
介绍个简单的命令 tar
|
SQL 算法 关系型数据库
MySQL中的Join 的算法(NLJ、BNL、BKA)
MySQL中的Join 的算法(NLJ、BNL、BKA)
529 0
|
测试技术 uml
UML2.0
UML2.0
124 0
|
关系型数据库 MySQL 测试技术
最好的 6 个免费天气 API 接口对比测评
天气 API包含丰富的天气数据,不仅有实时温度、湿度、风速、降水等这些基础数据,还有过去的历史天气数据和未来的天气预测数据,**顶级的天气 API 接口**还会包括天气灾害预警,空气质量指数,日出日落、潮汐及月相相关的天文气象等数据。**天气 API 也并不难获得,本教程将介绍 6 款国内外免费的天气 API,并手把手教你搭建一套属于自己的天气数据看板。**
29505 0
|
缓存 关系型数据库 MySQL
MySQL中脏读、不可重复读、幻读
简单聊聊mysql的脏读、不可重复读、幻读
226 0
|
8天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!