make:我想创建一个我可以从虚假调用的函数,并接受包含文件列表的变量。该函数应检查每个文件是否存在,并根据结果(打印消息等)进行操作
我知道如何检查文件是否存在,但在函数调用的上下文中,我看到了几种方法。我在这里要求正确的方式来做到这一点。
编辑:我不一定要找完整的工作代码......有用的指针很好。答案 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.txt
和no2.txt
。