Vindo do mundo de C e C ++, a maioria dos sistemas de compilação tem um install
alvo, principalmente Makefiles (onde é recomendado pelo GNU, por exemplo) ou CMake . Esse destino copia os arquivos de tempo de execução (executáveis, bibliotecas, ...) no sistema operacional (por exemplo, no C:\Program Files\
Windows).
Isso parece muito hacky, pois para mim não é responsabilidade do sistema de compilação instalar programas (que é realmente responsabilidade do sistema operacional / gerenciador de pacotes). Também significa que o sistema ou script de construção deve conhecer a organização dos programas instalados, com variáveis de ambiente, variáveis de registro, links simbólicos, permissões, etc.
Na melhor das hipóteses, os sistemas de compilação devem ter um release
destino que produza um programa instalável (por exemplo .deb
ou .msi
) e, em seguida, solicite ao sistema operacional que instale esse programa. Também permitiria ao usuário desinstalar sem precisar digitar make uninstall
.
Então, minha pergunta: por que o sistema de compilação geralmente recomenda ter um install
alvo?
make install
geralmente instala sob /usr/local
(ou mesmo /opt
) diretórios não tratados pelo "sistema principal de gerenciamento de SO / pacotes". Não faço ideia se o Windows tem alguma convenção semelhante.
make install
não faz sentido quando falamos de compilação cruzada
DESTDIR
.