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