Como parte da minha pesquisa, escrevo muitos códigos Python e MATLAB que nunca precisam ser distribuídos a mais ninguém. Mesmo que eu precise distribuir meu software, Python e MATLAB, ambos sendo interpretados, tornam o compartilhamento relativamente simples.
Agora estou escrevendo algum software em C ++ que gostaria de distribuir. Eu sei como compilar o software em minha própria máquina, mas o que não entendo é o que precisa ser feito para fornecer o software a outras pessoas.
Primeiro, mais sobre o meu projeto: estou escrevendo um código para calcular e exibir visualizações. O projeto é baseado em gráficos e, portanto, estou usando a biblioteca de gráficos LEMON. Estou explorando as implementações VTK e OpenGL com o objetivo de exibir a visualização. Gostaria de escrever ligações Python e MATLAB para que os usuários desses ambientes pudessem usar meu software e gostaria de produzir versões para Windows e Linux (ainda não pensei no OS X ...).
Então, vamos dar como exemplo a biblioteca de gráficos LEMON. É um monte de cabeçalhos, juntamente com um pequeno objeto compartilhado. No meu sistema de desenvolvimento, compilo a biblioteca com o CMake e a vinculo ao meu projeto.
Agora diga que quero dar meu software a alguém executando no Windows. Quero que eles possam baixar um instalador, clicar em um ou dois botões e ter tudo resolvido. Não quero que eles se preocupem com a instalação da biblioteca LEMON ou OpenGL. Eles não deveriam ter que compilar nada conscientemente. Isso é possível?
Tenho a sensação de que é, mas falho quando procuro referências. Eu tenho uma vaga idéia de que, se eu compilar um binário no Windows, devo poder distribuí-lo a qualquer pessoa executando um sistema operacional Windows. Mas e as bibliotecas que eu uso? Acho que preciso vinculá-los estaticamente no Windows, e isso resolverá o problema de dependência. Mas, no fundo, eu li que vincular estaticamente não é uma boa prática (ou é apenas no Linux?)
Como você pode ver, estou um pouco perdido. Eu apreciaria uma cutucada na direção certa e algumas referências para ler, se você souber de alguma!