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.ofunc.o : func.c$(CC) -o func.o -c func.cmain.o : main.c$(CC) -o main.o -c main.c.PHONY : rebuild clean allrebuild : clean allall : $(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 : testtest :@echo "x => $(x)"@echo "y => $(y)"@echo "a => $(a)"@echo "b => $(b)"@echo "c => $(c)"
ex1:
ex2:
ex3:
ex4: