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 ?