Frage

Ich arbeite an einem Projekt, das mit GNU autoconf / auto verteilt werden, und ich habe eine Reihe von Bash-Skripte, die awk-Skripten aufrufen. Ich mag den Bash-Skripte in dem $ PATH, um am Ende, aber nicht die awk-Skripten. Wie soll ich diese in das Projekt einfügen? Sollten sie mit anderen Binärdateien setzen in werden?

Auch ist es eine Möglichkeit, die endgültige Position der Datei nach der Installation zu bestimmen? Ich nehme an, dass / usr / local / bin nicht immer , wo die ausführbaren Dateien am Ende ...

War es hilfreich?

Lösung

Fügen Sie so etwas zu Makefile.am

scriptsdir = $(prefix)/bin
scripts_DATA = awkscript1 awkscript2

In diesem Fall wird es installieren awkscript in $ (Präfix) / ist (Sie können auch $ (bindir) verwenden).

Hinweis: Vergessen Sie nicht, dass der erste Name + dir benannt werden sollte (Skripte -> scriptsdir) und der zweite sollte Name + _DATA sein (Skripte -> scripts_DATA)

.

Andere Tipps

Sie können nur die Skripts auflisten, die Sie in Makefile.am installiert werden soll:

bin_SCRIPTS = foo bar

Dies wird foo verursachen und installieren während make installiert werden bar. Um den Weg zu ihrem endgültigen Standort zu bekommen, können Sie @ verwenden bindir @ in foo.in und lassen Sie configure build foo für Sie. Zum Beispiel in configure.ac:

AC_CONFIG_FILES([foo bar])

und dann in foo.in:

#!/bin/sh

prefix=@prefix@
exec_prefix=@exec_prefix@
bindir=@bindir@
echo bindir = $bindir

Beachten Sie, dass die Person läuft configure einen prefix angeben kann, --exec_prefix oder --bindir, und die Installation kann mit einem DESTDIR umgeleitet werden. Unter Verwendung der hier beschriebenen Technik, DESTDIR wird nicht berücksichtigt, und das Skript genommen wird, in einem anderen Ort als dem Pfad installiert werden, es wird Echo. Das ist von Entwurf und ist das richtige Verhalten, wie es in die Regel eine DESTDIR Installation verwendet wird, einen Tarball zu schaffen, die schließlich in das Dateisystem so ausgepackt wird, dass der bindir im Skript gültig wird.

Jonathan, als Antwort auf Ihre weitere Frage: Wenn Sie den Wert des Präfix zum Zeitpunkt der Build ersetzen möchten, müssen Sie:

  1. umbenennen Ihr Skript 'myscript' auf 'myscript.in'
  2. fügen Sie eine Regel configure.ac es am Boden zu erzeugen
  3. verwenden, um einen Makro rief ich gemacht AS_AC_EXPAND
  4. verwenden Sie es wie folgt aus:

    AS_AC_EXPAND (BINDIR, $ bindir)

  5. in Ihrem myscript.in ', können Sie jetzt @ BINDIR @ und es wird auf den vollständigen Pfad erweitert, wo das Skript installiert, am Ende wird.

Beachten Sie, dass Sie nicht PREFIX direkt verwendet werden soll, kann eine der Installationsverzeichnisse möglicherweise geändert werden, so dass Sie wirklich den Wert verwenden, übergeben konfigurieren für bindir wollen und erweitern das.

Wenn der awk-Skripte nicht in die Haupt ist-Verzeichnis (prefix / ist) geht, dann müssen Sie sie in einem entsprechenden Unterverzeichnis platzieren - wahrscheinlich von lib aber möglicherweise libexec oder teilen (da der awk-Skripte ist wahrscheinlich Plattform neutral).

Richtig: Software wird nicht unbedingt in / usr / local / bin am Ende; auf meinem Rechner, / usr / local / bin wird von MIS und die gesamte Software konnte ich daher unter / usr / Gnu / install geht. Ich benutze. Configure prefix = / usr / gnu die Software installiert zu bekommen, wo ich es will

Sie können den Wert von PREFIX in den Bash-Skripte einbinden - effektiv, werden Sie ‚kompilieren‘ die Skripte den Installationspfad enthalten. Achten Sie auf Probleme während der Build-Tests -. Sie können die Skripte relativ zum aktuellen Verzeichnis suchen müssen zuerst und relativ zu PREFIX später

Es gibt einige Ratschläge dazu in der Automake- Handbuch . Es scheint, dass der bevorzugte Ansatz ist die Skripte mit der Make-Datei nicht mit dem Configure-Skript zu generieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top