2016-12-15 59 views
-1

我正在嘗試使用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

回答

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時還丟失了)和缺少/。可能的一部分是你的問題中的拼寫錯誤,因爲不平衡的括號會導致解析錯誤。