[cfe-dev] Retrieving Appropriate Headers

Pedro Delgado Perez pedro.delgadoperez at mail.uca.es
Tue May 13 10:12:03 PDT 2014


 
Hi,

Regarding the problem I exposed, I found the next tutorial:

https://github.com/loarabia/Clang-tutorial/blob/master/tutorial6.cpp [ https://github.com/loarabia/Clang-tutorial/blob/master/tutorial6.cpp ]

In that tutorial, they use the option:

headerSearchOptions->AddPath("/usr/include/linux",
            clang::frontend::Angled,
            false, false);

But:
1- I don't know if this is what I'm looking for (how could my tool know that a header file like "<name_x/file.h> is in a path which does not even has the directory "name_x" in it?)
2- I don't know how can I adapt this code to my tool, as I don't use anything similar to:

clang::ParseAST(preprocessor,&astConsumer,astContext);

Can anyone give me a clue to solve this? 

> 
> Hi,
> 
> Some C++ programs include headers which are not in the same directory as the file being processed. In some cases, it is used a path relative to the file, for instance "directory/file.h". And in some other cases, the headers are included in a way understandable to the build system of the program, even using angled headers "<name/file.h> and that path is not relative to its location. 
> The problem for me is that I don't know how can I indicate in my tool the exact location of headers which are not in the same directory when creating the AST.
> I'm using something like this to parse the code:
>  ...
>  ClangTool Tool(OptionsParser.getCompilations(), file); 
>  Tool.run(newFrontendActionFactory(&mytool));
> ...
> 
> so I would need to tell the object "Tool" to find also in other directories, for instance, a mapping of the headers included and their directory. Or is there a simple way to do this that I'm overlooking?
> 
> Thanks,
> Pedro.
> 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20140513/603b486f/attachment.html>


More information about the cfe-dev mailing list