Makefile学习笔记(6)——变量中的变量,变量的高级用法,追加变量值,override指示符

6.1变量中的变量

在定义变量的值时,我们可以使用其他变量来构造变量的值,在Makefile中有两种定义变量的值。

先看第一种方式,也就是简单的使用“=”号,在“=”左侧是变量,右侧是变量的值,右侧变量的值可以定义在
文件的任何一处,也就是说,右侧中的变量不一定非要是已定义好的值,其也可以使用后面定义的值。如:

foo=$(bar)
bar=$(ugh)
ugh=Huh?
all:
    echo$(foo)

此时输出的值为“Huh?”可见,变量是可以使用后面的变量来定义的。

这个方法的好处是可以把变量的真实值推到后面来定义,但是不好的地方是当被递归定义时会反复调用例如:

A=$(B)
B=$(A)

这会让 make 陷入无限的变量展开过程中去。

 

第二种方法是使用“:=”,操作符这种方法,前面的变量不能使用后面的变量,只能使用前面已定义好了的变量。

x:=foo
y:=$(x)bar
x:=later
其等价于:
y:=foobar
x:=later
值得一提的是,这种方法,前面的变量不能使用后面的变量,只能使用前面已定义好了的变量。如果是这样:
y:=$(x)bar
x:=foo
那么,y 的值是“bar”,而不是“foobar”。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值