3
我試圖建立一個模式規則,允許我在宏調用中使用%,但我沒有得到我期望的結果。GNU Make:在模式規則宏中使用%
模式規則:
%.o: %.cpp $(%_H)
g++ -o [email protected] $(FLAGS) -c $<
的問題是與$(%_ 1H)
出於某種原因%並沒有擴張到它是什麼定義。
當我打印出依賴關係列表($ ^)時,只打印源文件。
我建立我的依賴關係的一個非常乾淨的方式,我想用:
# Header Dependencies per object
Geometry_H:=Geometry.h $(Error_H)
Enemy_H:=Enemy.h $(Geometry_H) $(Error_H)
Surface_H:=Surface.h $(Geometry_H)
Player_H:=Player.h $(Geometry_H) $(Surface_H)
SDLWindow_H:=SDLWindow.h $(Surface_H) $(Error_H)
Path_H:=Path.h $(Geometry_H) $(Error_H)
Territory_H:=Territory.h $(Geometry_H)
Board_H:=Board.h $(Territory_H) $(Geometry_H) $(Player_H) $(Path_H) $(Enemy_H) $(Error_H)
Error_H:=Error.h
Diminisher_H:=Diminisher.h $(SDLWindow_H) $(Geometry_H) $(Surface_H) $(Board_H) $(Error_H)
Main_H:=$(Diminisher_H)
另一人曾建議我改變這些變量到相關性列表。
I.e. Main_H:= $(Diminisher_H)
成爲 Main.o:$(Diminisher_H)
這是一個很好的修復,它的工作原理。 但是,問題仍然是$(%_ H)在某種程度上是無效的。
我想知道如何(如果可能)使它成爲一個有效的表達式。我試過$($%_ H),$($(%)_ H),$($(value%)_ H)等等。 看起來像%在宏調用中失去了意義。
在宏調用中沒有辦法使用%嗎?
謝謝。二次擴張做到了這一點。但是,當我嘗試使用$$($$%_ H)時,問題仍然存在。只有當我使用$$($$ * _ H)時,表達式才能正確擴展。它看起來像GNU make只是可能不喜歡在宏調用中使用%?另外,我感謝額外的信息。我需要在某個時候升級到自動生成依賴項......也許不適合這個項目。 – joshterrell805
@SexyBachelor百分號在模式規則中有特殊含義,只是不要使用它。 '$ *'是[自動變量](http://www.gnu.org/software/make/manual/make.html#Automatic-Variables),它擴展到規則匹配的詞幹,即百分比標誌。 –
好的。謝謝您的幫助。 – joshterrell805