Provenendo dal mondo di C e C ++, la maggior parte del sistema di build ha un target install
, in particolare Makefiles (dove è consigliato da GNU per esempio) o CMake . Questa destinazione copia i file di runtime (eseguibili, librerie, ...) nel sistema operativo (ad esempio, in C:\Program Files\
su Windows).
Questo sembra davvero hacky, dal momento che per me non è responsabilità del sistema di build installare programmi (che è in realtà la responsabilità del sistema operativo / gestore di pacchetti). Significa anche che il sistema di compilazione o lo script di compilazione devono conoscere l'organizzazione dei programmi installati, con variabili di ambiente, variabili di registro, collegamenti simbolici, permessi, ecc.
Nella migliore delle ipotesi, i sistemi di build dovrebbero avere un obiettivo release
che genererà un programma installabile (ad esempio .deb
o .msi
), quindi chiedere gentilmente al sistema operativo di installare quel programma. Permetterebbe anche all'utente di disinstallare senza dover digitare make uninstall
.
Quindi, la mia domanda: perché il sistema di creazione di solito consiglia di avere un target install
?