2016-12-15 3 views
-1

Ich versuche, ein Makefile zu verwenden, um einige Tests für mein anderes Programm zu machen.Makefile bei letzter Datei fehlgeschlagen

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] 

Das Problem, das ich habe, ist, dass, wenn ich die Make-Datei zu starten, es durch alle Testdateien mit Ausnahme der letzten geht, unter Berufung auf Tests „‚

‘Es gibt keine Regel durch erforderlich macht Test1.dif ist“

Ich habe überprüft, indem einige Testdateien entfernt, dass es tatsächlich auf die letzte Datei stirbt, egal welche Datei die letzte ist.

+0

Überprüfen Sie die Anzahl der "f" s in "diff". Ich vermute, Sie haben einen Tippfehler im ursprünglichen Code (wie der gebuchte Code ".dif" liest, aber die Fehlermeldung bezieht sich auf ".diff"). – DevSolar

+0

Das extra f gibt es nur meine Tastatur vermasselt. –

+0

Wenn Sie nach einem Problem über Makefile fragen. Bitte fügen Sie alle Makefile und Dateien Projektorganisation hinzu. – Stargateur

Antwort

0

Scheint wie diese ein fremdes Komma hier:

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

$(DIFF) wie ddir/one.dif ddir/two.dif, ddir/stdin1.dif Der mittlere Dateinamen aussehen wird es wirklich ein Komma als Teil des Namens hat. Listen in Make sind durch Leerzeichen voneinander getrennt, nicht durch Kommas.

Ich vermute, dass Ihre Fehlermeldung nicht genau ist, da in Ihrem Beispiel alle Dateinamen mit $(DIFF_DIR)/ vorangestellt sein sollten, und das Komma ist auch die Fehlermeldung.

Sie haben auch eine fehlende ) und eine fehlende / in der Substitution $(TESTS_DIR/%.stdin=$(DIFF_DIR)%.dif. Wahrscheinlicher Teil davon ist ein Tippfehler in Ihrer Frage, da die unsymmetrischen Klammern einen Parse-Fehler verursachen würden.

Verwandte Themen