Como parte de mi investigación, escribo mucho código Python y MATLAB que nunca necesita ser distribuido a nadie más. Incluso si necesito distribuir mi software, Python y MATLAB, ambos interpretados, hacen que compartirlo sea relativamente simple.
Ahora estoy escribiendo algún software en C ++ que me gustaría distribuir. Tengo una idea de cómo compilar el software en mi propia máquina, pero lo que no entiendo es lo que hay que hacer para dar el software a otras personas.
Primero, más sobre mi proyecto: estoy escribiendo un código para calcular y visualizar visualizaciones. El proyecto está basado en gráficos, por lo que estoy usando la biblioteca de gráficos LEMON. Estoy explorando las implementaciones de VTK y OpenGL con el fin de mostrar la visualización. Me gustaría escribir enlaces de Python y MATLAB para que los usuarios de esos entornos puedan usar mi software, y me gustaría producir versiones de Windows y Linux (aún no he pensado en OS X ...).
Entonces, tomemos la biblioteca de gráficos LEMON como ejemplo. Es un montón de encabezados junto con un pequeño objeto compartido. En mi sistema de desarrollo, compilo la biblioteca con CMake y la vinculo con mi proyecto.
Ahora di que quiero darle mi software a alguien que se ejecute en Windows. Quiero que puedan descargar un instalador, hacer clic en uno o dos botones y tener todo listo. No quiero que se preocupen por instalar la biblioteca LEMON u OpenGL. No deberían tener que compilar nada a sabiendas. es posible?
Tengo la sensación de que sí, pero me quedo corto cuando busco referencias. Tengo una vaga idea de que si compilo un binario en Windows debería poder distribuir ese binario a cualquiera que ejecute un sistema operativo Windows. ¿Pero qué pasa con las bibliotecas que uso? Supongo que necesito vincularlos estáticamente en Windows, y eso se encargará del problema de dependencia allí. Pero en el fondo de mi mente, he leído que enlazar estáticamente no es una buena práctica (¿o es solo en Linux?)
Como puedes ver, estoy algo perdido. Apreciaría un empujón en la dirección correcta, y algunas referencias para leer si conoces alguna.