clang -cc1 and system includes

Rom098 picture Rom098 · Aug 29, 2013 · Viewed 13.7k times · Source

I have the following file foo.cpp:

#include <vector>

struct MyClass
{
  std::vector<int> v;
};

It can be successfully compiled with clang (I'm using clang 3.3 on Ubuntu 13.04 32bit):

clang++ -c foo.cpp

Now I want to print AST:

clang++ -cc1 -ast-print foo.cpp

and I've got the following error

foo.cpp:1:10: fatal error: 'vector' file not found
#include <vector>
         ^
struct MyClass {
};
1 error generated.

It looks like clang++ -cc1 doesn't know about system include files etc. I'm wondering how to set up includes for clang++ -cc1?

Answer

user1741137 picture user1741137 · Jul 4, 2014

You need to set up the right include paths. on my system I added

-I/usr/include/i386-linux-gnu/c++/4.8 -I/usr/include/c++/4.8 

to the compiler flags. The first one was so that it could find bits/c++config.h Of course the 4.8 is due to the fact I am using a compiler compatible with g++-4.8

I also added

-std=c++11 -stdlib=libstdc++

as compiler options. Hope this helps