Come parte della mia ricerca, scrivo un sacco di codice Python e MATLAB che non ha mai bisogno di essere distribuito a nessun altro. Anche se ho bisogno di distribuire il mio software, Python e MATLAB, entrambi interpretati, rendono la condivisione relativamente semplice.
Ora sto scrivendo alcuni software in C ++ che vorrei distribuire. Ho un'idea su come compilare il software sulla mia macchina, ma quello che non ho capito è cosa deve essere fatto per dare ad altri il software.
In primo luogo, di più sul mio progetto: sto scrivendo del codice per calcolare e visualizzare le visualizzazioni. Il progetto è basato su grafici e quindi sto usando la libreria di grafi LEMON. Sto esplorando le implementazioni VTK e OpenGL allo scopo di visualizzare la visualizzazione. Mi piacerebbe scrivere binding Python e MATLAB per gli utenti di quegli ambienti per poter usare il mio software, e mi piacerebbe produrre versioni di Windows e Linux (non ho ancora pensato a OS X ...).
Quindi, prendiamo come esempio la libreria di grafi di LEMON. È un gruppo di intestazioni insieme a un piccolo oggetto condiviso. Sul mio sistema di sviluppo, compilo la libreria con CMake e la collego al mio progetto.
Ora dì che voglio dare il mio software a qualcuno che gira su Windows. Voglio che siano in grado di scaricare un programma di installazione, fare clic su un pulsante o due e avere tutto a posto. Non voglio che si preoccupino di installare la libreria LEMON o OpenGL. Non dovrebbero dover compilare consapevolmente nulla. È possibile?
Ho la sensazione che lo sia, ma vengo fuori di testa quando cerco riferimenti. Ho una vaga idea che se compilo un binario su Windows dovrei essere in grado di distribuire quel binario a chiunque stia utilizzando un sistema operativo Windows. Ma che mi dici delle biblioteche che uso? Sto indovinando che ho bisogno di collegarli staticamente su Windows, e che si occuperà del problema delle dipendenze. Ma nella parte posteriore della mia mente ho letto che il collegamento statico non è una buona pratica (o è solo su Linux?)
Come puoi vedere, sono un po 'perso. Gradirei una piccola spinta nella giusta direzione e alcuni riferimenti da leggere se ne sapete!