在Make

时间:2016-07-18 20:18:13

标签: makefile

我正在做一些数据验证。基本上,我有一个文件列表,我想确保它们是一致的。要使文件保持一致,它们需要匹配出现次数。

grep -c ValidId file.????.txt
wc -l < output.????.txt

如果它们都匹配,我想创建一个完成文件,所以我不必再次重新检查。这将是我的Makefile中用于数据验证的例程。

我将如何做到这一点?

1 个答案:

答案 0 :(得分:2)

模式匹配%可用于规则中的多个依赖项。可以使用它来跟踪一致的文件,因此运行make和更正错误只会检查不一致的文件:

FILES=$(wildcard file.????.txt)
RES_FILES=$(FILES:file.%=.result.%)

all: $(RES_FILES)

.result.%.txt: file.%.txt output.%.txt
    if [ `grep -c ValidId < file.$*.txt` -eq \
         `wc -l < output.$*.txt` ]; then \
       touch $@ ; \
    fi

clean:
    @rm -f $(RES_FILES)