Aus der Welt von C und C ++ stammend, haben die meisten Build-Systeme ein install
Ziel, insbesondere Makefiles (wo es zum Beispiel von GNU empfohlen wird ) oder CMake . Dieses Ziel kopiert die Laufzeitdateien (ausführbare Dateien, Bibliotheken usw.) im Betriebssystem (z. B. C:\Program Files\
unter Windows).
Das fühlt sich wirklich abgefahren an, da es für mich nicht in der Verantwortung des Build-Systems liegt, Programme zu installieren (was eigentlich in der Verantwortung des Betriebssystems / Paketmanagers liegt). Dies bedeutet auch, dass das Build-System oder das Build-Skript die Organisation der installierten Programme mit Umgebungsvariablen, Registrierungsvariablen, Symlinks, Berechtigungen usw. kennen muss.
Build-Systeme sollten bestenfalls ein release
Ziel haben, das ein installierbares Programm ausgibt (z. B. .deb
oder .msi
), und dann das Betriebssystem auffordern, dieses Programm zu installieren. Dies würde es dem Benutzer auch ermöglichen, zu deinstallieren, ohne etwas eingeben zu müssen make uninstall
.
Meine Frage: Warum empfehlen Build-Systeme normalerweise, ein install
Ziel zu haben?
make install
Wird normalerweise unter /usr/local
(oder sogar /opt
) installiert, die Verzeichnisse sind, die nicht vom "Kernbetriebssystem / Paketverwaltungssystem" behandelt werden. Keine Ahnung, ob Windows eine ähnliche Konvention hat.
make install
dass dies keinen Sinn ergibt, wenn wir über Cross-Compiling sprechen
DESTDIR
.