目标变量

简介: 目标变量

前面我们所讲的在 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

目录
相关文章
|
5月前
|
存储 Java
变量的分类和作用2
变量的分类和作用
32 1
|
5月前
|
C语言
LabVIEW局部变量和值属性节点之间的区别
LabVIEW局部变量和值属性节点之间的区别
90 0
|
5月前
|
Java 编译器
变量的分类和作用1
变量的分类和作用
33 0
|
5月前
|
存储 C# 容器
掌握 C# 变量:在代码中声明、初始化和使用不同类型的综合指南
变量是用于存储数据值的容器。 在 C# 中,有不同类型的变量(用不同的关键字定义),例如: int - 存储整数(没有小数点的整数),如 123 或 -123 double - 存储浮点数,有小数点,如 19.99 或 -19.99 char - 存储单个字符,如 'a' 或 'B'。Char 值用单引号括起来 string - 存储文本,如 "Hello World"。String 值用双引号括起来 bool - 存储具有两个状态的值:true 或 false
83 2
|
5月前
|
SQL 监控 测试技术
Lim测试平台变量使用规则介绍
Lim测试平台变量使用规则介绍
50 0
第4章 MATLAB编程基础——4.6 M文件中变量的检测与传递
第4章 MATLAB编程基础——4.6 M文件中变量的检测与传递
|
缓存 运维 监控
【运维知识进阶篇】Ansible变量详解(变量定义+变量优先级+变量注册+层级定义变量+facts缓存变量)
【运维知识进阶篇】Ansible变量详解(变量定义+变量优先级+变量注册+层级定义变量+facts缓存变量)
303 0
西门子S7-1200PLC变量表如何使用?如何声明、选用、显示、定义、更改变量?变量保持性如何设置?
在S7-1200 CPU的编程理念中,特别强调符号寻址的使用,在开始编写程序之前,用户应当为输入、输出、中间变量定义相应的符号名,也就是标签。具体步骤如下:
西门子S7-1200PLC变量表如何使用?如何声明、选用、显示、定义、更改变量?变量保持性如何设置?
|
数据库连接 数据库 数据安全/隐私保护
对象变量或with块变量未设置————问题根源
对象变量或with块变量未设置————问题根源
1149 0
对象变量或with块变量未设置————问题根源
|
C++
变量基础
变量基础
91 0