Makefile 中 和 的區別

2021-09-13 21:18:55 字數 616 閱讀 3056

= 是最基本的賦值

:= 是覆蓋之前的值

?= 是如果沒有被賦值過就賦予等號後面的值

+= 是新增等號後面的值

makefile中「=」和「:=」的區別到底有什麼區別,看兩個簡單的makefile
x = foo

y = $(x) bar

x = xyz

all:

@echo "$(y)"

執行make後,得到結果

xyz bar
x := foo

y := $(x) bar

x := xyz

all:

@echo "$(y)"

執行make後,得到結果

foo bar
可以看到使用「:=」使用的是賦值時的值,也就是在y := $(x) bar時x的值,此時x的值為bar,所以y的值為 foo bar。

使用「=」,使用的是最終的值,也就是在y = $(x) bar賦值時,使用的是最後的x的值,為xyz,所以最後的y值為xyz bar。

makefile中 和 的區別

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

makefile中 和「 」的區別

在makefile中,經常能看到這種賦值方式 mynumber 123 這種方式洋名叫做expansion assignment,翻譯過來叫擴充套件賦值,我一般就叫冒號等號。這位同學就問了,那麼它和普通的等號有啥不一樣捏?咱們廢話少說,直接看 animal frog var animal dog c...

Java中 和 的區別

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