Venant du monde du C et du C ++, la plupart des systèmes de build ont une install
cible, notamment Makefiles (où il est recommandé par GNU par exemple) ou CMake . Cette cible copie les fichiers d'exécution (exécutables, bibliothèques, ...) dans le système d'exploitation (par exemple, sous C:\Program Files\
Windows).
Cela semble vraiment hacky, car pour moi, ce n'est pas la responsabilité du système de construction d'installer des programmes (qui est en fait la responsabilité du système d'exploitation / gestionnaire de packages). Cela signifie également que le système de construction ou le script de construction doit connaître l'organisation des programmes installés, avec les variables d'environnement, les variables de registre, les liens symboliques, les autorisations, etc.
Au mieux, les systèmes de construction doivent avoir une release
cible qui produira un programme installable (par exemple .deb
ou .msi
), puis demandera au système d'exploitation d'installer ce programme. Cela permettrait également à l'utilisateur de désinstaller sans avoir à taper make uninstall
.
Donc, ma question: pourquoi le système de construction recommande-t-il généralement d'avoir une install
cible?
make install
installe généralement sous /usr/local
(ou même /opt
) des répertoires qui ne sont pas gérés par le "système de gestion du système d'exploitation / du noyau". Je ne sais pas si Windows a une convention similaire.
make install
cela n'a aucun sens lorsque nous parlons de compilation croisée
DESTDIR
.