Makefile在最后一个文件上失败

问题描述:

我正在尝试使用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 - > [email protected] 

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

我遇到的问题是,当我启动的makefile,它通过除了最后一个所有测试文件,理由是“没有规则,使所要求Test1.dif‘测试’”

我通过删除一些测试文件来检查它确实死于最后一个文件,而不管哪个文件是最后一个文件。

+0

检查“差异”中的“f”的数量。我怀疑你在原始代码中存在拼写错误(因为发布的代码读取“.dif”,但错误消息指的是“.diff”)。 – DevSolar

+0

额外的f就是我的键盘搞乱了。 –

+0

当您询问有关makefile的问题时。请添加所有makefile和文件项目组织。 – Stargateur

好像在这里这些外来逗号:

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中的列表由空格分隔,而不是由逗号分隔。

我怀疑你的错误信息不准确,因为在你的例子中,所有的文件名前缀应该是$(DIFF_DIR)/,逗号也是错误信息。

您在替换$(TESTS_DIR/%.stdin=$(DIFF_DIR)%.dif时还丢失了)和缺少/。可能的一部分是你的问题中的拼写错误,因为不平衡的括号会导致解析错误。