Vindo do mundo de C e C ++, a maioria dos sistemas de compilação tem um installalvo, 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 releasedestino que produza um programa instalável (por exemplo .debou .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 installalvo?
make installgeralmente 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 installnão faz sentido quando falamos de compilação cruzada
DESTDIR.