Makefile赋值符 = := ?= +=

[ = ]  与c语言类似,有一个特点就是在Makefile完全展开后,变量取最后一次的赋值。如:
x = foo
y = $(x) bar
x = abc
此时y值是abc bar,而不是foo bar。
[:=] 与前面[=]对比,[:]表示变量值取决于它在makefile中的位置,而不是等makefile展开后的值。如:
x := foo
y := $(x) bar
x := abc
此时y值时foo bar,而不是abc bar。
[?=] 表示若变量没有被赋值过,则就赋等号后面的值,如:
foo ?= $(bar)
此时只有当foo在前面没有被赋值时,才会将bar的值赋给foo。
关于定义为空值:
foo已经被定义过且为空值时,?= 也不会给其赋值。如:
foo = hello
foo ?= world
此时foo值时hello, 因为之前有赋值。
若如下:
foo = 
foo ?= world
此时foo值也是为空,因为空值也是值。
[+=] 表示追加等号后面的值
[$(x)] 表示引用变量x, 一般调用的为:=赋值的值
[$(PWD)] 表示当前目录
[%] 通配符,比如a.c  b.c c.c a.b,则用%.c,则匹配出a.c b.c c.c
[*] 通配符,表示所有,比如有a.c b.c c.c a.b,用*.c,则匹配出a.c b.c c.c
[$@] 表示目标文件
[$^] 表示所有依赖文件
[$<] 表示第一个依赖文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值