Hier ist eine Idee.
Verschieben Sie alle Bibliotheken von Drittanbietern, die nicht als installiert angezeigt werden sollen, in ein Unterverzeichnis namens noinst/
. Wenn Sie beispielsweise Ihr Projekt mit Boost versenden möchten, entpacken Sie es in das Verzeichnis noinst/boost/
. Verwenden Sie AC_CONFIG_SUBDIRS([noinst/boost])
. Innerhalb noinst/Makefile.am
, tun Sie etwas wie folgt aus:
SUBDIRS = boost
# Override Automake's installation targets with the command ":" that does nothing.
install:; @:
install-exec:; @:
install-data:; @:
uninstall:; @:
Der Effekt ist, dass, wenn einige der rekursiven „* make install“ oder Befehle „make uninstall“ aus dem Top-Level-Verzeichnis ausführen, wird die Rekursion in noinst/
stoppen und nicht seine Unterverzeichnisse besuchen. Andere rekursive Befehle (wie "make", "make clean" oder "make dist") werden immer noch in die Unterverzeichnisse geladen.
Sie können natürlich install:
und Freunde direkt in das Paket von Drittanbietern überschreiben, und vermeiden Sie die zusätzlichen noinst/
Verzeichnis. Aber wenn Sie wie ich sind, möchten Sie keine Pakete von Drittanbietern manipulieren, um deren Aktualisierung zu vereinfachen. Auch eine nette Eigenschaft der oben genannten Einrichtung ist, dass, wenn jemand in noinst/boost/
geht und sich entscheidet, make install
zu laufen, es funktioniert. Es tritt nicht standardmäßig bei der Installation Ihres Pakets auf.
Ich würde es gerne außerhalb meines Baumes behalten, aber ich versuche, die externen Abhängigkeiten zu reduzieren. Danke, werde das versuchen. –
Funktioniert nicht. Dies baut die Bibliothek nach meinem Programm auf, was offensichtlich nicht funktioniert. –