1. 程式人生 > >makefile中=、:=和+=的區別

makefile中=、:=和+=的區別

有感 分析 eight c語言 區別 all ont 總結 mil

經常有人分不清= 、:=和+=的區別 這裏我總結下做下詳細的分析:

首先你得清楚makefile的運行環境,因為我是linux系統,那麽我得運行環境是shell

在Linux的shell裏,shell只認識字符串,所以你就不要說整形什麽的了。說值也不貼切。

先看+=是什麽意思?

因為shell只認識字符串,所以這裏應該不難聯想到+=就是字符串連接的意思。相當於c語言的 strcat

舉個例子:

x本來是 U;

x += SB;

那麽運行結果就是 x為USB;

接著理解:=和=

這個是很常用的,比=用得多

看下面的例子:

x = sb;

y = u$(x)

x = all

運行結果x 是all y是uall

將=改成:=

x := sb;

y := u$(x)

x := all

運行結果x是all y是usb

怎麽樣?有感覺了吧。這裏=的話算$(x)的時候會一直搜索到文件最後,最後再賦值。

而:=則不會搜索後面的x值。也就是前面的是有效的而引用變量之後的就是無效的。

makefile中=、:=和+=的區別