2
make:我想創建一個函數,我可以從一個虛假的函數中調用,並接受一個包含文件列表的變量。該功能應檢查每個文件的存在和根據結果採取行動(打印一條消息等)Makefile:創建一個函數,用於檢查列表中是否存在文件
我知道如何檢查文件的存在,但在函數調用的上下文中,我看到幾種方法去解決它。我在這裏問的權利的方式來做到這一點。
編輯:我不一定在尋找完整的工作代碼......有用的指針很好。
make:我想創建一個函數,我可以從一個虛假的函數中調用,並接受一個包含文件列表的變量。該功能應檢查每個文件的存在和根據結果採取行動(打印一條消息等)Makefile:創建一個函數,用於檢查列表中是否存在文件
我知道如何檢查文件的存在,但在函數調用的上下文中,我看到幾種方法去解決它。我在這裏問的權利的方式來做到這一點。
編輯:我不一定在尋找完整的工作代碼......有用的指針很好。
下面是一個makefile的例子,當你說make create
創建,在查詢變量中不存在的文件 - 我不知道這是事情,你所想的那種:
QUERY := f1.txt no.txt no2.txt
FILES := $(wildcard *.txt)
EXIST_IN_QUERY := $(filter $(QUERY),$(FILES))
EXIST_NOT_IN_QUERY := $(filter-out $(QUERY),$(FILES))
NOTEXIST := $(filter-out $(FILES),$(QUERY))
info:
@echo existing files $(FILES)
@echo existing files in QUERY $(EXIST_IN_QUERY)
@echo existing files not in QUERY $(EXIST_NOT_IN_QUERY)
@echo non-existent files in QUERY $(NOTEXIST)
create: $(NOTEXIST)
%.txt:
echo "something" > [email protected]
當含有目錄f1.txt和f2.txt運行時,info
目標產生:
existing files f1.txt f2.txt
existing files in QUERY f1.txt
existing files not in QUERY f2.txt
non-existent files in QUERY no.txt no2.txt
如果在同一個目錄中運行,該create
目標將創建文件no.txt
和no2.txt
。
我會說正確的做法是不使用make-write shell腳本。 – 2011-06-02 17:17:02
@Neil,shell腳本不適用於我的場景。任何其他想法? – 2011-06-02 17:30:44
我認爲你需要定義「等」在「打印消息等」中。如果你真的只想打印一條消息,那麼'$(foreach f,$ 1,$(如果$(通配符$ f),$(info $ f存在),$(info $ f不存在)))''會做,但這似乎不是很有用。 – slowdog 2011-06-03 15:32:16