I have composite project which contains: C++ library for Linux/Windows, C++/CLI library based on C++ library sources for Windows, C# projects based on C++/CLI library for Windows, C++ projects based on C++ library for Linux/Windows. How to build this kind of projects? What build system I need choose?
Now I use CMake which generate makefile in Linux and MSVS solution in Windows, but it’s so difficult to write CMakeLists.txt for build C# projects.
Before I had two MSVS solutions: for managed (which configurated by cmake) and for native (which generated by cmake) code projects. Managed projects were writen in MSVS. Native projects were writen in CMakeLists.txt. CMake were configurating managed projects used Windows enviroment variables which were keeping paths to external libraries, output directories, etc. Surely it’s bad decision.
I’m currently working in a project that has C++, CLI and C# and the C++ is also used in an iOS application. The way we have it setup on windows is we have each language in its own project and then all the projects in one solution, that way we can compile everything in one step through the IDE. All the dependencies and such are managed by VS. I think the simplicity of having VS setup all the dependencies and such far outweighs the extra work of making a project for the C++ files. For iOS I have a separate Xcode project that builds all the C++ stuff for iOS, likewise you would have a CMake project for windows.