共计 765 个字符,预计需要花费 2 分钟才能阅读完成。
第 4 课 – 变量和不同的赋值形式
- makefile 中反对程序设计语言中的变量的概念
- makefile 中的变量只代表文本数据 (字符串)
-
makefile 中的变量名规定
- 变量名能够蕴含字符,数字,下划线
- 不能蕴含“:”“#”,“=”或“”
- 变量名大小写敏感
变量的定义和应用
makefile 中变量的赋值形式
- 简略赋值 (:=)
- 递归赋值 (=)
- 条件赋值 (?=)
- 追加赋值 (+=)
不同的赋值形式意义不同
简略赋值 (:=)
- 程序设计语言中的通用赋值形式
- 只针对以后语句的变量无效
x := foo
y := $(x)b
x := new
.PHONY : test
test :
@echo "x => $(x)"
@echo "y => $(y)"
// 最终输入后果
// x => new
// y => foob
递归赋值 (=)
- 赋值操作可能影响多个其它变量
- 所有与指标变量相干的其它变量都受到影响
x = foo
y = $(x)b
x = new
.PHONY : test
test :
@echo "x => $(x)"
@echo "y => $(y)"
// 最终输入后果
// x => new
// y => newb
条件赋值 (?=)
- 如果变量未定义,应用赋值符号中的值定义变量
- 如果变量曾经定义,赋值有效
x := foo
y := $(x)b
x ?= new
.PHONY : test
test :
@echo "x => $(x)"
@echo "y => $(y)"
// 最终输入后果
// x => new
// y => foob
追加赋值 (+=)
- 原变量值之后加上一个新值
- 原变量值与新值之间有空格隔开
x := foo
y := $(x)b
x += $(y)
.PHONY : test
test :
@echo "x => $(x)"
@echo "y => $(y)"
// 最终输入后果
// x => foob foob
// y => foob
小结
- makefile 中反对变量的定义和应用
-
makefile 中存在四种变量的赋值形式
- 简略赋值 (:=)
- 递归赋值 (=)
- 条件赋值 (?=)
- 追加赋值 (+=)
正文完