Makefile:创建一个检查列表中是否存在文件的函数

时间:2011-06-02 17:04:44

标签: makefile

make:我想创建一个我可以从虚假调用的函数,并接受包含文件列表的变量。该函数应检查每个文件是否存在,并根据结果(打印消息等)进行操作

我知道如何检查文件是否存在,但在函数调用的上下文中,我看到了几种方法。我在这里要求正确的方式来做到这一点。

编辑:我不一定要找完整的工作代码......有用的指针很好。

1 个答案:

答案 0 :(得分:2)

这是一个makefile的例子,当你说make create时,它会在QUERY变量中创建不存在的文件 - 我不知道这是你想到的那种:

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" >  $@

在包含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