我目前正在編寫一個更大的makefile,它將處理源文件的遞歸結構,並將它放入目標目錄中的同一個遞歸結構中。基本上,你可以假設這樣的Makefile:GNU Make - 如何處理目標文件中的路徑
DESTINATION_DIR = out
SOURCE_DIR = src
OBJECTS = out/abc.o out/subdir/test.o out/subdir/subdir/xyz.o
.PHONY: all
all: $(OBJECTS)
$(DESTINATION_DIR)/%.o: $(SOURCE_DIR)/%.c
@echo "[email protected] --- $<"
正如你看到的,我想用$(SOURCE_DIR)的依賴,以取代$(DESTINATION_DIR),但這並不工作。我該如何解決這個問題?我甚至試圖用這種方式替換腳本:
%.o: $(shell myreplacementscript.py "%.c" "$(DESTINATION_DIR)" "$(SOURCE_DIR)")
@echo "[email protected] --- $<"
但百分比符號將被傳遞到我的腳本沒有更換。那麼我怎麼能告訴它輸出依賴於源文件動態?我需要將子目錄保存在OBJECTS變量中,我不能將結構展平。而子目錄是動態的,而不是預定義的。
我已經搜索了其他人有相同的問題,但他們要麼有平的OBJECTS或遞歸的製造,在我的情況是不適合的,因爲根據依賴目錄之間的互連。
摘要/錯誤消息:
它不會取代輸出/輸入與Src /對象。所以錯誤信息是「Keine Regel vorhanden,um das Target»out/abc.o«,benötigtvon»all«,zu erstellen。Schluss。」這是典型的錯誤「沒有制定目標的規則......」。
完整的makefile可以在這裏看到: Full Makefile
每當我離開%的.html結腸的右手邊在左側它的工作原理,但我需要有源文件作爲依賴以獲得工作增量構建(希望沒有創建依賴文件)。
親切的問候,
丹尼爾
你使用什麼版本的Make? (如果您不確定,請嘗試使用'make -v'。) – Beta 2014-09-24 22:55:30
如果您確切地說明了_but這不起作用_實際上意味着(錯誤消息?錯誤行爲?缺少行爲?),那麼幫助會簡單得多您。 – MadScientist 2014-09-24 23:34:47
@Beta:GNU Make 3.81 – DanielB 2014-09-25 07:12:07