On 7/14/2014 6:29 PM, Christopher Kormanyos wrote:
PS How close are we to being able to use clang with the VS IDE?
There are two problems with using clang with the VS IDE and VC++:
1) The lesser of the two problems is that we still have not worked out
way for using Boost Build with clang targeting either gcc or VC++, although we can do one or the other separately.
<snip> detailed problem description...
2) The greater of the two problems is that in order to compile with the VC++ header files clang in Windows, targeting VC++, has had to emulate a certain amount of VC++ "bugs" just to digest the header files without compile errors.
<snip> detailed problem description...
May I suggest something?
Sometimes an idea from an idiot such as me can provide an alternate way of thinking --- or not, or whatever. To me it seems very difficult to force clang to comprehend specialized VS headers and effectively deal with the VS preprocessor? VS is hand-crafted for the VC++ compiler and not designed to interact natively with a foreign compiler.
Have you considered simply side-stepping the VS compiler for the clang compilation stage and finding the appropriate juncture point to re-connect object files with VS?
I am not someone who works with clang as a clang developer, changing the clang implementation. I have just taken unto myself the task of interfacing with clang developers as a Boost library developer. The decisions about how clang itself targeting VC++ in Windows should work has been made by actual clang developers. My only interface with them, via the clang mailing list, is what can be done so that clang in Windows is able to compile/link Boost library code. They are the ones whose goal is to have clang targeting VC++ be able to use the VC++ header files and VC++ lib files to create code, whether libraries or applications. If you want to contribute suggestions about clang you can inteface with them via the clang developers mailing list. They are not averse to hearing what an experienced Boost library developer has to say, but remember, as I have, that it is they who must do the work to make clang operational in Windows.
This is the object file level.
If the object file format can be brought into a compatible form for VS, then you do not even need to force the clang compilation stage to interoperate with the VC++ preprocessor or the VC++ headers.
As I understand it clang does not ship with its own header/lib files whether on Windows, Linux, or the Mac. Instead it normally uses gcc's header/lib files. But in the case of Windows, aside from targeting gcc's own header/lib files it is also offering an alternative of trying to target VC++'s headers/lib files so as to be able to function as a drop-in replacement of the VC++ compiler. Also for VC++ it must be able to work with Windows SDK header/lib files.
A big problem might be the language of the binary object files: VS = COFF / clang = ELF. If you can work around this, perhaps you can compile with clang as an external compiler and hook up to the linker and debugger after compilation at the object
file level--- assuming of course that the object file binary format can somehow be made compatible with Visual Studio's COFF format.
What I am saying is perhaps to simply side-step the VC++ compiler, do not use its preprocessor, and do not use its headers. Simply use clang in its entirety for compiling. You then only need to find a way to hook up to the object file binary format on the object file level. I hope I did not get something drastically wrong here, but it sounds like a problem that I dealt with previously.