Hi !
Happy New 2013 Year to everyone.
I’ve used cmake-gui and cross compiled llvm + clang to visual studio 2008. (Windows).
(Found one web page which recommended to use cygwin, but it has it’s own problems apparently).
Now I would like to add managed c++ support (and interfaces) with further wiring to C#.
So far I have experimented with cland.exe front end tool, but C# wiring would require dll.
I have noticed that there exists libclang.dll - but it’s interface did not opened to me (two test applications
c-arcmt-test.exe / c-index-test.exe - did not understood what they do exactly.)
(question 1) My idea is to copy clang.exe’s source codes directly to dll - but may be you can recommend me
best approach for doing this dll ? In ideal world I would like to have one front end exe (like clang.exe)
for testing compilation, and dll which is used by .exe. Dll exposes also managed C++ interfaces next to
native C++ interfaces.
(question 2) Do you know best approach of enabling managed c++ support (/clr) within dll - does cmake support this
already - preferably so that /clr support is enabled only on individual files, not on project level.
(question 3) Do you have or has anyone made support for parsing .vcproj / .vcxproj project files -
so project files could be taken as an input directly ?
Btw - to commit any change into clang trunk - do I need developer account to svn ?
I prefer to chat over skype if you have more detailed questions.
Now I would like to add managed c++ support (and interfaces) with further wiring to C#.
So you want to generate some wrappers to use the Clang C++ API from a .NET? In this case you might find useful the generator I have been working on: https://github.com/tritao/cxxi
Beware it is not fool-proof yet so you will probably need to fix some stuff in case you go down that road.
So far I have experimented with cland.exe front end tool, but C# wiring would require dll.
I have noticed that there exists libclang.dll - but it’s interface did not opened to me (two test applications
c-arcmt-test.exe / c-index-test.exe - did not understood what they do exactly.)
Using the libclang C API would be easier, and I have generated a C# binding with my own bindings generator tool before.
(question 1) My idea is to copy clang.exe’s source codes directly to dll - but may be you can recommend me
best approach for doing this dll ? In ideal world I would like to have one front end exe (like clang.exe)
for testing compilation, and dll which is used by .exe. Dll exposes also managed C++ interfaces next to
native C++ interfaces.
I would not even try to bind or make a matching .NET interface to the entire Clang C++ API. It will be a lot of work. Just create some interfaces to get the exact information you need and pass around the data to the managed side via C++/CLI. You can find an example of this here: https://github.com/tritao/cxxi/blob/master/src/Parser/Parser.cpp
(question 2) Do you know best approach of enabling managed c++ support (/clr) within dll - does cmake support this
already - preferably so that /clr support is enabled only on individual files, not on project level.
I was able to do this with CMake on an individual file level. It is a bit hacky but should work: https://github.com/tritao/clang/blob/master/lib/Sema/CMakeLists.txt#L55
(question 3) Do you have or has anyone made support for parsing .vcproj / .vcxproj project files -
so project files could be taken as an input directly ?
Yes, I have worked on this particular problem in GSoC 2010 for the Mono project. You can find code in MonoDevelop’s repo for parsing Visual Studio solutions and projects, along with open-source MSBuild support to build them.
Btw - to commit any change into clang trunk - do I need developer account to svn ?
Yes, you can use the Git mirror to have your own code under source control more easily though.