1. 程式人生 > >簡單聊一下makefile中的 =, :=, ?=和+=

簡單聊一下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++中的+=, 相當於累加。

       這些東西本來很簡單, 但我發現, 有很多地方沒講清楚, 所以來嘮叨一下。