2
我有一個makefile,根據一些屬性設置vpath並生成一個源文件列表到一個變量。我需要在不編譯任何東西的情況下運行makefile(編譯實際上由另一個makefile處理),並根據vpath設置查看文件名匹配哪些實際文件。如何在make中vpath匹配後獲得絕對路徑?
我有一個makefile,根據一些屬性設置vpath並生成一個源文件列表到一個變量。我需要在不編譯任何東西的情況下運行makefile(編譯實際上由另一個makefile處理),並根據vpath設置查看文件名匹配哪些實際文件。如何在make中vpath匹配後獲得絕對路徑?
選項1:湊合它的路徑搜索:
.PHONY: whichfiles
whichfiles: $(LIST_OF_SOURCE_FILES)
@echo $+
選項2:使用$(通配符)模擬路徑搜索:
.PHONY: whichfiles
whichfiles:
@echo $(foreach f,$(LIST_OF_SOURCE_FILES),$(firstword $(wildcard $(VPATH:%=%/$f)) not-found:$f))
無論哪種方式, 「使whichfiles」 將打印匹配文件的列表。
如果找不到某些文件,則選項1將失敗,並顯示「無法生成規則」報告找不到的第一個文件。選項2將爲每個丟失的文件打印「未找到:」。