在make中有四种方式对变量赋值:
来源:互联网 发布:数据接口yisaipay 编辑:程序博客网 时间:2024/05/10 09:33
在make中有四种方式对变量赋值:
当等号右边引用的变量(如例子中的CC)还没有被定义时,它被展开成空(nothing)而不是空格之类。 这种方式叫做“递归展开”,直到该变量被使用时等号右边的内容才会被展开,其实叫做“迟滞展开”更合适。神奇的是,这种展开方式可以不按顺序定义变量。比如:
MAKE_DEPEND = $(CC) -M
...
# Some time later
CC = gcc
只要在此之前没有引用过MAKE_DEPEND就没问题。
另外,不止是“迟滞展开”,事实上每次使用该变量,等号右边的内容都会被重新展开。
1. :=运算符,如MAKE_DEPEND := $(CC) -M
这种方式叫做“简单展开”,因为在读到makefile中的这一行时等号右边就立即被展开了,等号右边引用的所有变量(如例子中的CC)也会被立即展开。其行为与一般编程和脚本语言相同。当等号右边引用的变量(如例子中的CC)还没有被定义时,它被展开成空(nothing)而不是空格之类。
2. =运算符,如MAKE_DEPEND = $(CC) -M
MAKE_DEPEND = $(CC) -M
...
# Some time later
CC = gcc
只要在此之前没有引用过MAKE_DEPEND就没问题。
另外,不止是“迟滞展开”,事实上每次使用该变量,等号右边的内容都会被重新展开。
3. ?=运算符,如OUTPUT_DIR ?= $(PROJECT_DIR)/out
这种方式叫“条件展开”,只有当OUTPUT_DIR 还没有被定义过时才进行赋值,否则什么都不做。这种方式在处理环境变量是特别有用。4. +=运算符,如OUTPUT_DIR += $(PROJECT_DIR)/out
“追加”方式。 其主要目的是给“递归展开”的变量追加内容。因为简单变量可以用simple := $(simple) new stuff的方式来追加内容;而对于递归展开的变量,recursive = $(recursive) new stuff会导致循环引用。这种情况只能用+=运算符。 0 0
- 在make中有四种方式对变量赋值:
- make 变量 赋值 区别
- ajax对变量赋值
- bash 变量赋值方式
- bash 变量赋值方式
- bash 变量赋值方式
- vc++在成员函数中对成员变量赋值
- makefile 变量的赋值方式
- 关于结构体对其方式错误引起的变量赋值错误
- C#学习笔记二 在类下不能对变量赋值,赋值必须发生在函数中
- 让我们来嚼makefile---make给makefile内部变量赋值
- C++中使用初始化列表比在构造函数中对成员变量赋值更高效
- AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值
- 用Select对变量赋值的细节
- FameView脚本对变量的赋值
- Makefile 中四种变量赋值方式的区别
- makefile中的各种变量赋值方式
- Makefile知识点-1-----变量赋值的方式
- ubuntu环境ceph配置入门(二)
- 吉布斯现象( Gibbs)
- epoll小结
- kernel相关宏定义
- 【Android】viewpager banner 广告 自动轮播 小圆点
- 在make中有四种方式对变量赋值:
- OpenStack云计算快速入门之一:OpenStack及其构成简介
- 删除回滚表空间时出错ORA-01548: active rollback segment ‘_SYSSMUxx_xxxx’ found
- Linux的CPU资源调优
- 多次写文字到图片上的水印效果
- 图片加载---预加载
- 李刚:服务外包产业转型期人才培养及服务的探索不实践
- 回车与换行的区别
- shell 与 export命令