[cfe-dev] Default Headers with CompilerInstance

Antoine Trouve trouve at isit.or.jp
Wed Nov 7 23:42:31 PST 2012

Hello everybody

I am now using clang API in order to alter some C sources using my custom ASTVisitor, and I am struggling to make my CompilerInstance object to know about the path of default system headers.

I have a protoype that uses the object CompilerInstance to initialize all the important stuffs (DiagnosticsEngine, Preprocessor ...) and calls "clang::ParseAST" at the end to use my own visitor.
This prototype works well for simple file that do not use any system headers (e.g. "stdlib.h"), but when I want to use these, I get errors like:

$ tsc.c:34:10: fatal error: 'stdlib.h' file not found
$ #include <stdlib.h>

If I set "Verbose = 1" to the HeaderSearchOptions of my CompilerInstance object, I can see that indeed, my search list is empty:

$ #include "..." search starts here:
$ End of search list.

I tried to add the system headers manually using "HeaderSearchOptions.Add" but (1) this is not portable and (2) anyway I can't make that work either.

Could you please explain me more in details how Clang does to find the default system headers ?
I attach the source file of my simple prototype.

Best regards,

- Antoine

-------------- next part --------------
A non-text attachment was scrubbed...
Name: prototype.cpp
Type: application/octet-stream
Size: 14270 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20121108/2652a8e9/attachment.obj>

More information about the cfe-dev mailing list