makefile中 和「 」的區別

2022-09-03 09:24:11 字數 629 閱讀 5993

在makefile中,經常能看到這種賦值方式:

mynumber := 123

這種方式洋名叫做expansion assignment, 翻譯過來叫擴充套件賦值, 我一般就叫冒號等號。這位同學就問了,那麼它和普通的等號有啥不一樣捏?咱們廢話少說,直接看**。

animal =frog

var = "

$(animal) dog cat

"animal = tiger

test:

echo $(var)

輸出是:

tiger dog cat

再來看冒號等號的輸出和上面有啥不一樣:

animal :=frog

var := "

$(animal) dog cat

"animal :=tiger

test:

echo $(var)

輸出時:

frog dog cat

看出來**不一樣了嗎?

沒錯,直接使用"=",變數在呼叫的時候一起展開,也就是在執行"echo $(var)"的時候;但是使用":="的時候,變數在賦值的時候就展開了。 

Makefile 中 和 的區別

是最基本的賦值 是覆蓋之前的值 是如果沒有被賦值過就賦予等號後面的值 是新增等號後面的值makefile中 和 的區別到底有什麼區別,看兩個簡單的makefilex foo y x bar x xyz all echo y 執行make後,得到結果 xyz barx foo y x bar x xy...

makefile中 和 的區別

經常有人分不清 和 的區別 這裡我總結下做下詳細的分析 首先你得清楚makefile的執行環境,因為我是linux系統,那麼我得執行環境是shell 在linux的shell裡,shell只認識字串,所以你就不要說整形什麼的了。說值也不貼切。先看 是什麼意思?因為shell只認識字串,所以這裡應該不...

Java中 和 的區別

第十一,short s1 1 s1 s1 1 有什麼錯?short s1 1 s1 1 有什麼錯?引出一下討論。賦值運算子,在編譯器將右邊的表示式結果計算出來後,和左邊的變數型別比較精度,如果左邊的變數精度低於右邊的結果的精度,編譯器會顯式的報錯,告訴程式設計師去強制轉型。所以s1 s1 1出錯 最...