4.makefile的变量
学自<狄泰软件学院>
makefile变量的概念
- makefile中支持程序设计语言中的变量的概念
- makefile中的变量只代表文本数据(字符串)
- makefile中的变量名规则
- 变量名可以包含字符,数字,下划线
- 不能包含 ”:”,”#”,”=” 或 “ ”
- 变量名大小写敏感
变量的定义和使用
makefile中变量的赋值方式
- 简单赋值 ( := )
- 递归赋值 ( = )
- 条件赋值 ( ?= )
- 追加赋值 ( += )
不同的赋值方式意义不同
简单赋值( := )
- 程序设计语言中的通用的赋值方式
- 只针对当前语句的变量有效
使用( := )操作符来定义时,这种变量make只对其进行一次展开。
示例代码:简单赋值
x := foo
x := new
y := $(x) y
x := later
.PHONY: test
test :
@echo "x = $(x)"
@echo "y = $(y)"
输出结果:
C:\exercise\makefile>make
“x = later”
“y = new y”
递归赋值( = )
1.赋值操作可能影响多个其他变量
2.所有与目标变量相关的其他变量都将受到影响
示例代码:递归赋值
x = foo
x = new
y = $(x) y
x = later
.PHONY: test
test :
@echo "x = $(x)"
@echo "y = $(y)"
输出结果:
C:\exercise\makefile>make
“x = later”
“y = later y”
条件赋值 ( ?= )
- 如果变量未定义,使用赋值符号中的值定义变量
- 如果变量已经定义,赋值无效
示例代码:条件赋值
x := foo
y = $(x) y
x ?= new
.PHONY: test
test :
@echo "x = $(x)"
@echo "y = $(y)"
输出结果
C:\exercise\makefile>make
“x = foo”
“y = foo y”
追加赋值 ( += )
- 原变量值之后加上一个新值
- 原变量值与新值之间由空格隔开
示例代码:追加赋值
x := foo
y := $(x) y
x += $(y)
.PHONY: test
test :
@echo "x = $(x)"
@echo "y = $(y)"
输出结果:
C:\exercise\makefile>make
“x = foo foo y”
“y = foo y”