Attualmente sto lavorando a un progetto in cui sono l'unico sviluppatore, ma dovrebbe essere consegnato presto ai "clienti". Poiché questa è in realtà un'applicazione composta da più librerie per i laboratori dei fisici, i confini tra sviluppatori e clienti sfocano o scompaiono - i miei colleghi nei laboratori hanno familiarità con C ++, un IDE (di solito Visual Studio) e git e devono essere in grado di fare modifiche ad almeno parti del progetto.
Il progetto stesso contiene attualmente un'applicazione e un mucchio di librerie. Alcune librerie richiedono determinati componenti hardware installati e non verranno compilati senza di essi, tuttavia il progetto principale (vale a dire l'applicazione e la maggior parte delle altre librerie) sono indipendenti. La vecchia soluzione è un singolo progetto di Visual Studio in un git, in cui alcune definizioni del preprocessore includono o escludono parti del codice e chi controlla il git, deve assicurarsi di adattare tali definizioni al suo hardware (brutto ....).
Il mio obiettivo è quello di dividere il singolo progetto in più destinazioni che si compilano più o meno indipendenti e se un singolo obiettivo non riesce a compilare non ha effetto sugli altri target (librerie) in modo che possano ancora essere utilizzati. L'applicazione è indipendente dalla maggior parte delle librerie, quindi non è un problema. Sto anche usando CMake per essere indipendente dalla piattaforma / compilatore e per generare un programma di installazione per i binari precompilati.
Mi piacerebbe avere un programma di installazione che consenta loro di installare le librerie e le intestazioni in pochi clic. E se scelgono, installano anche il codice sorgente e il repository git, in modo che possano cambiare il codice secondo necessità, compilarlo, testarlo "in posizione" (quindi ad esempio non due installazioni diverse, una per l'utilizzo una per lo sviluppo) e essere in grado di inviare le modifiche al repository principale (o repository, ad esempio uno per ogni libreria, ma non è necessario).
Un ulteriore problema potrebbe essere che nessuno qui è davvero un programmatore professionista. Quindi, mentre c'è sempre qualcuno in giro con competenze decenti per mantenere un sistema di repository / build più piccolo e sono sicuro di poter insegnare alle persone come usare, ad es. CMake, almeno l'installer binario deve essere utilizzabile da persone senza alcuna competenza di programmazione.
TL; DR
Come posso distribuire facilmente binari precompilati con un'opzione aggiuntiva per "installare", modificare e ricompilare l'origine, inclusa un'opzione per inviare le modifiche al git principale?