我讀一個大的Makefile,其中一部分我不明白:理解的Makefile語法和變量
$(IREJECTION): $(IREJECTION:%$(MACH64).o=%.cpp)
$(CPP) $(CPPDLIBOPTS) -c $(@:%$(MACH64).o=%.cpp) -o [email protected]
在這個腳本(注意,我刪除了不必要的變量,以避免冗長),什麼是以下平均
$(IREJECTION:%$(MACH64).o=%.cpp)
(在第一行)$(@:%$(MACH64).o=%.cpp)
? (在第二行)
另外,這是什麼形式A: B
是什麼意思?如:
$(IREJECTION): $(IREJECTION:%$(MACH64).o=%.cpp) #on the first line
<---- A ----> <------------ B ---------------> #first instance of A: B
<--- A ----> <-------- B ------> #second instance of A: B
正如你看到的,有形式A:B
—的兩個實例,第二個是內部B
本身。我也在這裏看到類似的東西:
$(@:%$(MACH64).o=%.cpp) #on the second line
<A> <---------B------->
請幫我理解這一點。
這些substitituoin /重寫規則:http://www.gnu.org/software/make/manual/make.html#Substitution-Refs。基本上'$(var:%。foo =%。bar)'意思是用'.bar'替換'var'的所有元素的'.foo'擴展名# – Anycorn
@Anycorn:我認爲你的意思是:**替換**'。 '**'.foo'的'var' **所有元素的'bar'擴展? – Nawaz
我明白了爲什麼它會混淆,但不是,它是這種形式 – Anycorn