第四载:makefile中变量的赋值方式

    makefile类似于脚本程序,当然也支持程序里边变量的概念,makefile中的变量只是文本数据(字符串),没有C语言中的数字等,并且大小写敏感。
    makefile中的变量有4种赋值方式:
    - 简单赋值:= )(最常用)
    - 递归赋值 =
    - 条件赋值?=
    - 追加赋值+=

    对于变量的使用,与C语言不同的是,需要使用$符号与()结合,例如要使用变量x,那么在makefile中的方式为$(x)

    下边分别讨论这4种赋值
    - 简单赋值:= ):通用赋值方式,只对当前语句的变量有效,如下makefile

X := foo
y := $(x)b
x := new

.PHONY : test

test:
    @echo "x => $(x)"
    @echo "y => $(y)"

- 递归赋值 = ):所有与目标变量相关的其他变量都会受到影响

x = foo
y = $(x)b
x = new

.PHONY : test

test:
    @echo "x => $(x)"
    @echo "y => $(y)"
/home/delphi>make test 
x => new
y => newb
/home/delphi>

 因为使用的递归赋值,所以x = new 会将前边的x也会重新赋值,导致y=newb

- 条件赋值?= ):如果变量未定义,则赋值有效,如果已经定义,则无效

x := foo
y := $(x)b
x ?= new

.PHONY : test

test:
    @echo "x => $(x)"
    @echo "y => $(y)"
/home/delphi>make test 
x => foo
y => foob
/home/delphi>

因为x已经在前边定义为foo,所以后边 x ?= new 条件赋值将new赋给x无效

- 追加赋值+= ):原变量值后边追加新值,以空格分开

x := foo
y := $(x)b
x += new

.PHONY : test

test:
    @echo "x => $(x)"
    @echo "y => $(y)"
/home/delphi>make test 
x => foo new
y => foob
/home/delphi>

第一次 x := foo,第二次 x += new,所以追加赋值后的结果为 foo new

 

makefile的四种变量赋值比较简单,但是最常用的是 简单赋值( := ),使用其余3种赋值时需要注意使用环境。

以上内容参考《狄泰软件学院》操作系统篇之 - makefile专题

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值