我想使用 Clang 和 LibTooling 来创建一些 C++ 源代码分析和转换工具。我已经按照本教程构建了 Clang 和 LibTooling,并且我已经能够使用我构建的 Clang 二进制文件运行和创建一些分析工具并编译 C++ 程序。但是,如果我包含标准库中的头文件(在源文件或我的工具中),我会在编译或运行源文件/工具时遇到问题。例如,如果我对以下 C++ 源文件运行 clang-check:
#include <iostream>
int main() {
std::cout << "Hello";
return 0;
}
我收到“致命错误:找不到‘iostream’文件”。(注意:我可以编译 C++ 程序,例如带有用户定义类的程序,但不能编译使用标准库的 C++ 程序。)为了解决这个问题,我构建了 libc++(按照本指南,在 llvm/project 中构建它我构建 LLVM 和 Clang 的目录),但我仍然无法获取 Clang 和使用 libc++ 的工具。现在,如果我尝试使用以下方法编译测试文件:
export CPLUS_INCLUDE_PATH="~/clang-llvm/llvm/projects/libcxx/include"
export LD_LIBRARY_PATH="~/clang-llvm/llvm/projects/libcxx/lib"
~/clang-llvm/llvm/build/bin/clang++ ~/Documents/main.cpp
然后我得到“致命错误:找不到'unistd.h'文件”。所以我的问题是:我如何正确地指出 Clang 和我的工具来使用 libc++?
我正在运行 OS X Yosemite 10.10 并使用 Clang 3.6.0。