简单聊一下Makefile中的 =, :=, ?=和+=

 最容易混淆的是 =和:=, 我们先来看看makefile:

x = hello
y = $(x)
x = world
test1: test1.cpp
    @echo $(y)

         执行make后, 结果为world,  再看改动后的makefile:

x = hello
y := $(x)
x = world
test1: test1.cpp
    @echo $(y)

       执行make后, 结果为hello,  为什么有区别呢?
       因为=其实类似于C++中的引用, 相当于y和x绑定了, 所以在echo的时候, 值为world

       而:=其实类似于C++中的赋值, 所以在echo的时候, 值为hello.   在makefile中, 强烈建议使用:=进行复制。

       y?=x是什么呢? 其实很好理解, 它的意思是: 如果y没有赋值过, 那就赋值。 如果赋值过, 那本次就不赋值了。

       y+=x是什么呢?  很好理解, 其实就是C++中的+=, 相当于累加。

       这些东西本来很简单, 但我发现, 有很多地方没讲清楚, 所以来唠叨一下。

注:

1)echo命令

echo命令用于在shell中打印shell变量的值,或者直接输出指定的字符串。linux的echo命令,在shell编程中极为常用, 在终端下打印变量value的时候也是常常用到的,因此有必要了解下echo的用法echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。

语法:echo(选项)(参数)
选项:-e:激活转义字符。

参数:变量:指定要打印的变量。

实例

用echo命令打印带有色彩的文字:

文字色:

echo -e "\e[1;31mThis is red text\e[0m"
This is red text


--------------------- 
作者:stpeace 
来源:CSDN 
原文:https://blog.csdn.net/stpeace/article/details/53056500 
版权声明:本文为博主原创文章,转载请附上博文链接!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值