我试图使用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;
我已经通过删除一些测试文件来检查它确实在最后一个文件上死了,无论哪个文件是最后一个文件。
答案 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)/
中也丢失了)
和/
。可能的一部分是你的问题中的拼写错误,因为不平衡的括号会导致解析错误。