我想使用Clang和LibTooling來創建一些C++源代碼分析和轉換工具。我已經在this教程中構建了Clang和LibTooling,並且我已經能夠運行並創建一些分析工具並使用我構建的Clang二進制文件編譯C++程序。但是,如果我包含標準庫中的頭文件(無論是源文件還是我的工具),編譯或運行源文件/工具時都會遇到問題。舉例來說,如果我運行下面的C++源文件鐺檢查:如何在Clang和LibTooling中使用標準庫
#include <iostream>
int main() {
std::cout << "Hello";
return 0;
}
我碰到一個「致命的錯誤:沒有發現‘iostream的’文件」。 (注意:我可以編譯C++程序,例如使用用戶定義的類的程序,而不是使用標準庫的C++程序。)爲了解決這個問題,我構建了libC++(在this指南中,將其構建在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優勝美地10.10和使用Clang 3.6.0。