簡單聊一下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 
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章