2016-12-15 1 views
-1

メイクファイルを使って他のプログラムのテストをしようとしています。最後のファイルにメイクファイルがありません

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] 

私がいる問題は、私はメイクファイルを起動すると、それは「

をテスト 『』で必要とされるTest1.difを作るためのルールがない」理由に、最後の1を除くすべてのテストファイルを通過するということです

私はいくつかのテストファイルを削除して、実際に最後のファイルが最後のファイルであるかどうかにかかわらず消滅することを確認しました。

+0

"diff"の "f"の数を確認してください。元のコードに誤字があると思われます(投稿されたコードは ".dif"と表示されますが、エラーメッセージは ".diff"を参照しています)。 – DevSolar

+0

その余分なものは私のキーボードが台無しになっているだけです。 –

+0

makefileに関する問題を尋ねるとき。すべてのmakefileとファイルプロジェクトの組織を追加してください。 – Stargateur

答えて

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のリストはカンマではなく空白で区切られています。

あなたの例ではすべてのファイル名の先頭に$(DIFF_DIR)/という接頭語が付いていて、カンマもエラーメッセージであるため、エラーメッセージが正確ではないと思われます。

あなたはまた、$(TESTS_DIR/%.stdin=$(DIFF_DIR)%.dif)がなく、/が見つからないことがあります。おそらく、その不一致の括弧が解析エラーの原因になるので、あなたの質問にはタイプミスがあります。

関連する問題