c++ - clang -cc1 和系统包括

标签 c++ clang include-path abstract-syntax-tree

我有以下文件foo.cpp:

#include <vector>

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

可以用clang编译成功(我在Ubuntu 13.04 32bit上用的是clang 3.3):

clang++ -c foo.cpp

现在我要打印 AST:

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

我遇到了以下错误

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

看起来 clang++ -cc1 不知道系统包含文件等。 我想知道如何为 clang++ -cc1 设置包含?

最佳答案

您需要设置正确的包含路径。 在我的系统上我添加了

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

到编译器标志。第一个是这样它可以找到 位/c++config.h 当然 4.8 是因为我使用的是与 g++-4.8 兼容的编译器

我也加了

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

作为编译器选项。 希望这有帮助

关于c++ - clang -cc1 和系统包括,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18506590/

相关文章:

编译时检查枚举成员是否存在

c++ - 获取 "Cannot open include file: ' atlbase.h' : No such file or directory"error

c - eclipse包含自定义文件(c)

c++ - 向函数提供参数时使用 '<<' 运算符

C++ 可变参数列表

c++ - mingw/include/c++/cstdlib : stdlib. h: 没有那个文件或目录

c++11 - constexpr 的函数参数等效项是什么?

clang - 我可以用 clang 将内存源代码编译为可执行文件吗?

c++ - visual studio 2010 包含目录路径

c++ - 即使通过引用返回时也会调用复制构造函数?