Ich habe eine Konsolenanwendung namens "foo", die eine Referenztextdatei als Eingabe (in.txt) und generiert Text bei Standardausgabe (ich möchte dieses Verhalten beibehalten).Wie Umleitung in cmake verwenden add_test
In make (nicht cmake) verwende ich ein Testziel, das foo aufruft und die Ausgabe wie folgt in eine Datei (out.txt) umleitet. Dann benutze ich diff die Datei out.txt mit der erwarteten refernece (ref.txt) zu vergleichen
test:
./foo -a test/in.txt > test/out.txt
diff test/out.txt test/ref.txt
Dies funktioniert gut machen werden. Jetzt ist meine Frage; Wie kann ich cmake verwenden, um ein ähnliches Makefile zu erstellen?
Aus einem subdrectory build genannt, habe ich versucht,
project(foo)
...
add_test(NAME test1 COMMAND ./foo ../test/in.txt > ../test/out.txt)
enable_testing()
Cmake Version Mit 3.5, ich ein Makefile erhalten, ohne Fehler, aber wenn ich make test
nennen, schlägt der Test selbst. Es scheint, dass der Cmake-Befehl add_test
Befehlszeilenargumente unterstützt, aber nicht die Umleitung. Ich versuchte Zitate und entkam ohne Erfolg. Da ich diesen Teil nicht bestehen konnte, habe ich nicht versucht, diff zu verwenden. Ich stelle mir nur vor, dass ich Foo und Diff in einer Zeile packen könnte, indem man & verwendet, wie Sie mit bash machen können. Das wäre der zweite Schritt.
Ausgezeichnet! Ich würde nur einen Leitartikel vorschlagen. Als kompletter cmake-Einsteiger war mir nicht klar, dass der letzte Codeblock nicht nur das plattformunabhängige diff einführt, sondern auch eine komplette ** Alternative ** zum Codeblock darstellt, der mit "include" beginnt. Also würde ich vorschlagen, "So könnte man auch etwas wie:" mit "So können Sie das oben mit vereinfachen:" –
@ KağanKayal Gern geschehen. Und danke für den Hinweis. Ich habe den Text entsprechend aktualisiert. – Florian