[cfe-dev] Include Default C++ paths

David Blaikie dblaikie at gmail.com
Wed Oct 17 09:50:53 PDT 2012


(readding cfe-dev)



On Wed, Oct 17, 2012 at 9:42 AM, Mohammad Adil <madil90 at gmail.com> wrote:
> What I am trying to do is to make a small program which parses the AST and
> does some rewriting to output modified code. How will I use the Driver in
> this case? All I want to do is to parse the AST.

I don't know off-hand what the best way to integrate the Driver's
lib/header discovery is, just that that's where the logic is.

The focus of Clang development with regard to "tools" like the one you
described is the Tooling infrastructure (overview of options & a link
to libTooling-specific information can be found here:
http://clang.llvm.org/docs/Tooling.html ). I'm not sure if that meets
the "standalone execution" scenario that you seem to be going for -
it's ideally meant to integrate with code already building using an
existing build system that has been modified to generate a database of
compilation commands. I /think/ it should also work standalone & still
do all the driver-based discovery, but I could be wrong.

> On Wed, Oct 17, 2012 at 9:39 PM, David Blaikie <dblaikie at gmail.com> wrote:
>>
>> On Wed, Oct 17, 2012 at 9:29 AM, madil90 <madil90 at gmail.com> wrote:
>> > Hi,
>> >    I am trying to parse a C++ code but clang doesn't recognize the C++
>> > types. Consider the following code
>> >
>> > #include <iostream>
>> > #include <string>
>> >
>> > int main()
>> > {
>> >     string str;
>> > }
>> >
>> > clang gives an error at <iostream> and doesn't recognize the string
>> > type. To
>> > enable C++, I did "langOptions.CPlusPlus=1" and the code recognizes
>> > custom
>> > C++ classes. So how do I include default C++ paths?
>>
>> I assume you're using clang as a library, rather than actually going
>> through the clang driver? The driver's where all (most) of the header
>> search logic is. You can extract the paths by simply asking clang what
>> command it used to invoke the frontend (I forget offhand, but there is
>> a verbose/print-commands option to clang) & just pass those in. But if
>> you want to make a tool using clang as a library & have the same
>> header/lib discovery that the clang command line program has, you'd
>> need to duplicate or reuse the logic in the driver.
>>
>> - David
>
>
>
>
> --
> Mohammad Adil
> LUMS SSE
>



More information about the cfe-dev mailing list