所以我有這樣的目標依賴一個makefile:我可以在makefile目標中有多個%符號嗎?
all: $(foreach lang, $(LANGS), $(foreach models,$(MODELS),targetName$(model).xml$(lang)))
和目標名稱目標看起來是這樣的:
targetName%.xml%: MODEL\=% targetName.xml*
但它不工作。我得到這個錯誤:
make[1]: *** No rule to make target `targetNameMYMODEL.xmlen', needed by `all'. Stop.
然而,呼籲「所有」與在目標名稱目標這樣的硬編碼語言工作:
all: $(foreach lang, $(LANGS), $(foreach models,$(MODELS),targetName$(model).xmlen))
,並呼籲「所有」沒有全部或目標名稱語言工作得很好。我在想也許Makefile不喜歡在目標名稱中有兩個百分號。另外,由於我有點繼承了這個makefile,有人能告訴我MODEL \ =%的含義是什麼嗎?還有另一個目標如下所示:MODEL%: ;
但我不確定\ =%的含義。
編輯:
我有,比方說,5種型號列表,並列表說5種語言,我們的目標是產生25個文件,每一個組合: 所以基於此效應初探進一步明確的語言和模型。
targetName%.xml target最初將創建一個名爲targetName.xml的文件,但現在我需要它來構建類似targetName.xml的東西這就是爲什麼我需要兩個%符號。
如上所示,我通過嵌套的foreach循環訪問這兩個列表,但我很難將這些變量傳遞給目標。我試圖從foreach語句中導出語言變量,我試圖將targetName%.xml的內容放在for循環中以便循環語言。後者不起作用,因爲在循環的「do」部分有Makefile命令(例如eval)。