Makefile 语法
程序员文章站
2022-07-12 11:28:13
...
一、赋值
Makefile 的变量的四种基本赋值方式:
- 简单赋值 ( := ) 编程语言中常规理解的赋值方式,只对当前语句的变量有效。
- 递归赋值 ( = ) 赋值语句可能影响多个变量,所有目标变量相关的其他变量都受影响。
- 条件赋值 ( ?= ) 如果变量未定义,则使用符号中的值定义变量。如果该变量已经赋值,则该赋值语句无效。
- 追加赋值 ( += ) 原变量用空格隔开的方式追加一个新值。
递归变量“=” :左侧为变量名,右侧是变量的值,该方法的优点是右侧变量的值可以定义在文件的任何一处,也就是说,右侧中的变量不一定非要是已定义好的值,其也可以使用后 面定义的值。
x=foo
y=$(x)b
x=new
test:
@echo "y=>$(y)"
@echo "x=>$(x)"
在 shell 命令行执行make test我们会看到:
y=>newb
x=>new
直接展开式变量“:=” 使用“:=”定义变量时,变量值中对其他量或者函数的引用在定义变量时被展开(对变量进行替换)。所以变量被定义后就是一个实际需要的文本串,其中不再包含任何变量的引用。这种方法,前面的变量不能使用后面的变量,只能使用前面已定义好了的变量
x:=foo
y:=$(x)b
x:=new
test:
@echo "y=>$(y)"
@echo "x=>$(x)"
在 shell 命令行执行make test我们会看到:
y=>foob
x=>new
条件赋值的赋值操作符“?=” 只有此变量在之前没有赋值的情况下才会对这个变量进行赋值
x:=foo
y:=$(x)b
x?=new
test:
@echo "y=>$(y)"
@echo "x=>$(x)"
在 shell 命令行执行make test我们会看到:
y=>foob
x=>foo
追加赋值 “+=”
x:=foo
y:=$(x)b
x+=$(y)
test:
@echo "y=>$(y)"
@echo "x=>$(x)"
在 shell 命令行执行make test我们会看到:
y=>foob
x=>foo foob
上一篇: Makefile语法
下一篇: CARLA获得航向偏差