2011-06-02 43 views
2

make:我想創建一個函數,我可以從一個虛假的函數中調用,並接受一個包含文件列表的變量。該功能應檢查每個文件的存在和根據結果採取行動(打印一條消息等)Makefile:創建一個函數,用於檢查列表中是否存在文件

我知道如何檢查文件的存在,但在函數調用的上下文中,我看到幾種方法去解決它。我在這裏問的權利的方式來做到這一點。

編輯:我不一定在尋找完整的工作代碼......有用的指針很好。

+0

我會說正確的做法是不使用make-write shell腳本。 – 2011-06-02 17:17:02

+0

@Neil,shell腳本不適用於我的場景。任何其他想法? – 2011-06-02 17:30:44

+0

我認爲你需要定義「等」在「打印消息等」中。如果你真的只想打印一條消息,那麼'$(foreach f,$ 1,$(如果$(通配符$ f),$(info $ f存在),$(info $ f不存在)))''會做,但這似乎不是很有用。 – slowdog 2011-06-03 15:32:16

回答

2

下面是一個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.txtno2.txt

相關問題