第4课 - 变量和不同的赋值方式
1. makefile中的变量
(1)makefile 中支持程序设计语言中变量的概念
(2)makefile 中的变量只代表文本数据(字符串类型)
(3)makefile 中的命名规则
— 变量名可以包含字符 , 数字 , 下划线
— 不能包含 ":" , "#" , "=" 或 " "
— 变量名大小写敏感
2. 变量的定义和使用
编程实验:
#演示变量的使用 CC := g++ TARGET := hello-world.out $(TARGET) : func.o main.o $(CC) -o $(TARGET) func.o main.o func.o : func.c $(CC) -o func.o -c func.c main.o : main.c $(CC) -o main.o -c main.c .PHONY : rebuild clean all rebuild : clean all all : $(TARGET) clean : rm *.o $(TARGET)
运行结果:
3. makefile中变量的赋值方式
(1)简单赋值(:=)
— 程序设计语言中的通用的赋值方式
— 只针对当前语句的变量有效
(2)递归赋值(=)
— 递归赋值操作可能影响多个其它变量
— 所有与目标变量相关的其它变量都将受到影响
— 脚本语言也是顺序一句一句执行的,递归赋值会改变与目标变量相关的其它变量
— 只会影响那些同样是递归赋值的变量
(3)条件赋值(?=)
— 如果变量未定义,使用赋值符号中的值定义变量
— 如果变量已经定义,赋值无效
(4)追加赋值(+=)
— 原变量值之后加上一个新值
— 原变量与新值之间由空格隔开
编程实验:
#演示4种变量的定义方式 # ex1 # x := foo # y := $(x)b # x := new # ex2 # x = foo # y = $(x)b # x = new # a = $(b) # b = $(c) # c = hello-makefile # ex3 # x := foo # y := $(x)b # x ?= new # ex4 # x := foo # y := $(x)b # x += new .PHONY : test test : @echo "x => $(x)" @echo "y => $(y)" @echo "a => $(a)" @echo "b => $(b)" @echo "c => $(c)"
ex1:
ex2:
ex3:
ex4:
3. 小结
(1)makefile 中支持变量的定义和使用
(2)makefile 中存在四种变量的赋值方式
-
-
简单赋值(:=)
-
递归赋值(=)
-
条件赋值(?=)
-
追加赋值(+=)
-