第4课 - 变量和不同的赋值方式
1. makefile中的变量
(1)makefile 中支持程序设计语言中变量的概念
(2)makefile 中的变量只代表文本数据(字符串)
(3)makefile 中的命名规则
— 变量名可以包含字符 , 数字 , 下划线
— 不能包含 ":" , "#" , "=" 或 " "
— 变量名大小写敏感
2. 变量的定义和使用
1 #演示变量的使用 2 3 CC := gcc 4 TARGET := hello.out 5 6 $(TARGET) : main.o func.o 7 $(CC) -o $(TARGET) main.o func.o 8 9 main.o : main.c 10 $(CC) -o main.o -c main.c 11 12 func.o : func.c 13 $(CC) -o func.o -c func.c 14 15 .PHONY : rebuild all clean 16 17 rebuild : clean all 18 19 all : $(TARGET) 20 21 clean : 22 rm *o $(TARGET)
3. makefile中变量的赋值方式
(1)简单赋值(:=)
— 程序设计语言中的通用的赋值方式
— 只针对当前语句的变量有效
(2)递归赋值(=)
— 赋值操作可能影响多个其它变量
— 所有与目标变量相关的其它变量都将受到影响
— 脚本语言也是顺序一句一句执行的,递归赋值会改变与目标变量相关的其它变量
— 只会影响那些同样是递归赋值的变量
(3)条件赋值(?=)
— 如果变量未定义,使用赋值符号中的只定义变量
— 如果变量已经定义,赋值无效
(4)追加赋值(+=)
— 原变量值之后加上一个新值
— 原变量与新值之间由空格隔开
1 #演示4种变量的定义方式 2 3 # ex1 4 # x := foo 5 # y := $(x)b 6 # x := new 7 8 # ex2 9 # x = foo 10 # y = $(x)b //这里必须也是 = 不能是 := 否则不会影响 11 # x = new 12 13 # a = $(b) 14 # b = $(c) 15 # c = hello-makefile 16 17 # ex3 18 # x := foo 19 # y := $(x)b 20 # x ?= new 21 22 # ex4 23 # x := foo 24 # y := $(x)b 25 # x += new 26 27 .PHONY : test 28 29 test : 30 @echo "x => $(x)" 31 @echo "y => $(y)" 32 @echo "a => $(a)" 33 @echo "b => $(b)" 34 @echo "c => $(c)"
注:本文整理于《狄泰12月提升计划》课程内容
狄泰QQ群:199546072