I'm currently working on a project where i am the only developer, but it should be delivered soon to "customers". Since this is actually an application consisting of multiple libraries for physicists laboratories, the boundaries between developers and customers blur or disappear - my colleagues in the labs are familiar with C++, an IDE (usually Visual Studio) and git and need to be able to make modifications to at least parts of the project.
The project itself currently contains an application and a bunch of libraries. Some of the libraries require certain hardware installed and will not compile without it, however the main project (i.e. the application and most other libraries) are independent. The old solution is a single Visual Studio project in a git, where certain preprocessor definitions include or exclude parts of the code and whoever checks out the git, needs to make sure to adapt those definitions to his hardware (ugly....).
My goal is to split the single project into multiple targets that compile more or less independent and if a single target fails to compile it does not affect the other targets (libraries) so they still can be used. The application is independent of most libraries, so thats not a problem. I am also using CMake to be platform/compiler independent and to generate an installer for precompiled binaries.
I would like to have an installer for them to be able to install the libraries and headers in just a few clicks. And if they choose to, also install the source code and the git repo, so they can change the code as needed, compile it, test it "in place" (so e.g. not two different installations, one for usage one for developement) and be able to push the changes to the main repository (or repositories, e.g. one for each library, however thats not necessary).
An additional problem might be, that noone here is really a professional programmer. So while theres always someone around with decent skills to maintain a smaller repository/build system and i am sure i can teach people how to use e.g. CMake, at least the binary installer needs to be usable by people without any programming skills.
How can i easily deliver precompiled binaries with an additional option to "install", modify and recompile the source, including an option to push the changes to the main git(s)?