2013-01-08 4 views
5

verwenden Ich verwende Autotools für mein C++ Paket. Mein Paket hat eine einzelne Binärdatei, zum Beispiel "myprog". Ich habe ein Bash-Skript geschrieben, "test.bash", das einen Funktionstest enthält. Dieses Skript hat 4 Schritte: (1) Eingabedateien erstellen, (2) erwartete Ausgabedateien erzeugen, (3) "myprog" für die Eingabedateien starten, (4) die Ausgaben von "prog" mit den erwarteten Ausgaben vergleichen.Verwenden Sie "make check", um Bash-Skript für Tests zu starten, die das Programm binär

In Schritt 3 muss "test.bash" den Pfad zu "Myprog" kennen. Wenn ich "test.bash" selbstständig im Standalone-Modus starte, kann ich den Pfad zu "myprog" als Option in der Befehlszeile angeben. Aber was kann ich tun, wenn make check oder make distcheck verwendet wird?

Ich lese die manual of Autotools/Automake. Ich schätze, es gibt einen Weg, Variablen zu verwenden, die durch configure gesetzt werden, aber ich sehe nicht, wie man sie benutzt, also ist jede Lösung sehr willkommen!

Antwort

5

Sie können die Variable TESTS in Makefile.am verwenden und die Variable AM_TESTS_ENVIRONMENT einrichten, um Optionen zu übergeben oder eine Umgebungsvariable für die Bash-Skripte festzulegen. Es ist auf this Seite beschrieben, in der üblichen zufälligen Stil der Autotools Handbücher.

Da myprog außerhalb des Quellbaum gebaut werden, könnten Sie eine Variable $(top_builddir)/relative/path für die Verwendung im Skript festgelegt, oder verwenden Sie den Befehl pwd für das Verzeichnis, in dem das Skript ausgeführt wird.

+1

Ich habe endlich $ (abs_top_builddir) verwendet, danke. Weitere Details finden Sie auf der Automake-Mailingliste: http://lists.gnu.org/archive/html/automake/2013-01/msg00029.html – tflutre