Viniendo del mundo de C y C ++, la mayoría de los sistemas de compilación tienen un install
objetivo, en particular Makefiles (donde GNU lo recomienda, por ejemplo) o CMake . Este objetivo copia los archivos de tiempo de ejecución (ejecutables, bibliotecas, ...) en el sistema operativo (por ejemplo, en C:\Program Files\
Windows).
Esto se siente realmente extraño, ya que para mí no es responsabilidad del sistema de compilación instalar programas (que en realidad es responsabilidad del sistema operativo / administrador de paquetes). También significa que el sistema de compilación o el script de compilación deben conocer la organización de los programas instalados, con variables de entorno, variables de registro, enlaces simbólicos, permisos, etc.
En el mejor de los casos, los sistemas de compilación deben tener un release
objetivo que genere un programa instalable (por ejemplo .deb
o .msi
), y luego solicite amablemente al sistema operativo que instale ese programa. También permitiría al usuario desinstalar sin tener que escribir make uninstall
.
Entonces, mi pregunta: ¿por qué el sistema de compilación generalmente recomienda tener un install
objetivo?
make install
generalmente se instala bajo /usr/local
(o incluso /opt
), que son directorios no manejados por el "sistema operativo principal / sistema de gestión de paquetes". Sin embargo, no tengo idea de si Windows tiene alguna convención similar.
make install
no tiene sentido cuando hablamos de compilación cruzada
DESTDIR
.