Makefile在最后一个文件上失败

时间:2016-12-15 20:39:26

标签: makefile

我试图使用makefile为我的其他程序进行一些测试。

DIFF=$(TXT_FILES:$(TESTS_DIR)/%.txt=$(DIFF_DIR)/%.dif), $(STDIN_FILES:$(TESTS_DIR/%.stdin=$(DIFF_DIR)%.dif)

$(DIFF_DIR)/%.dif: $(TESTS_DIR)/%.txt $(DIFF_DIR)/%.out
    ./03uzduotis/getfasta $< | diff $(DIFF_DIR)/$*.out - > $@

$(DIFF_DIR)/%.dif: $(TESTS_DIR)/%.stdin $(DIFF_DIR)/%.out
    cat $< | ./03uzduotis/getfasta - | diff $(DIFF_DIR)/$*.out - > $@

我遇到的问题是,当我启动makefile时,它会遍历除最后一个之外的所有测试文件,引用&#34;没有规则要求#34;测试&#34;&#34;

我已经通过删除一些测试文件来检查它确实在最后一个文件上死了,无论哪个文件是最后一个文件。

1 个答案:

答案 0 :(得分:0)

这里似乎是一个无关的逗号:

DIFF=$(TXT_FILES:$(TESTS_DIR)/%.txt=$(DIFF_DIR)/%.dif), $(STDIN_FILES:$(TESTS_DIR/%.stdin=$(DIFF_DIR)%.dif)

$(DIFF)看起来像ddir/one.dif ddir/two.dif, ddir/stdin1.dif中间文件名确实有一个逗号作为名称的一部分。 Make中的列表由空格分隔,而不是逗号。

我怀疑您的错误消息并不准确,因为从您的示例中,所有文件名都应该以{{1​​}}为前缀,逗号也是错误消息。

您在替换$(DIFF_DIR)/中也丢失了)/。可能的一部分是你的问题中的拼写错误,因为不平衡的括号会导致解析错误。