> -----Original Message----- > From: CMake [mailto:cmake-boun...@cmake.org] On Behalf Of Stuermer, > Michael SP/HZA-ZSEP > Sent: Friday, June 26, 2015 14:47 > To: cmake-developers@cmake.org; cm...@cmake.org > Subject: [CMake] C# support? > > Hi and sorry for cross-posting this on both lists, > > I checked the mailing list history about the C#/.NET support topic and realized > that the interest in C# support seems to have declined a bit. > > I am right now in the need of good C# support and adding external project > files is not that much of an option to me. So I started hacking away > everything that is needed for .csproj generation and support of mixed > managed/unmanaged targets. Not yet done, but there is a light at the end of > the tunnel. > > Now the question: is there any real interest at all in this feature? Does it have > a realistic chance to be accepted for upstream or will I have to maintain my > own fork of CMake? >
Well, I have only just recently started using CMake. So I am not speaking from a great deal of experience. But I am currently converting over a bunch of stuff into a set of CMake projects. (must be multiple CMake projects built by a superbuild via ExternalProject because we use three different C/C++ compilers and target three different CPU architectures.) Part of that "stuff" involves a mixture of Visual Studio projects involving (1) 100% unmanaged C++ code: this is the easy stuff to move to CMake, (2) C++/CLI mixed mode projects, (3) C# projects that consume the mixed mode C++/CLI projects. I have yet to start working on that part of the CMake migration, but I'm not looking forward to figuring out how to make the C# projects consume the build output from the C++/CLI projects and still have the Visual C# projects be easy to add/remove files from. All these particular projects are targeting Visual Studio 2008 32-bit, so it *ought* be possible to use them all from one single CMake build tree & one single Visual Studio solution... I have seen include_external_msproject CMake command: http://www.cmake.org/cmake/help/v3.3/command/include_external_msproject.html But it's not clear to me how I'd make the C# project depend on other CMake targets (i.e. the mixed mode C++ projects). The best I've thought of would be to use configure_file to modify the project to substitute the compiled C++ DLLs in the references section of the project. But then it will be a pain to modify the original C# projects in SOURCE_DIR. And also, the C# project normally has relative paths, so if it gets configure_file'd into BINARY_DIR all the source code paths will break. I guess all the above is to say, I'm interested in that feature. But I may be too much of a newbie at CMake to say whether that is a good "CMake way" of doing things. I still need to experiment with the above command, and read up on old mailing list messages on the subject. But it seems to me the logical way for supporting C# would be: (1) it becomes a first-class language that can be mentioned in the project() command, (2) therefore, all the generators can use it, so you aren't restricted to Visual Studio generator (I like the Ninja generator because it's faster than Visual Studio), (3) Visual Studio generator would emit a solution containing generated VC++/VC# projects. Anything else feels like a bit of a hack to me. But #1 thru #3 sounds like a lot of work though... Also, C# doesn't compile to object files - does CMake currently support the concept of a language that doesn't require separate compiling/linking steps? Best regards, James Johnston -- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/cmake-developers