c++ - Clang 工具 (libtooling) : set header search path to standard libs headers. 基础框架

标签 c++ compilation include header-files llvm-clang

相关链接http://kevinaboos.wordpress.com/2013/07/23/clang-tutorial-part-ii-libtooling-example

我正在使用 CommonOptionsParser解析 clang 工具的参数:

// parse the command-line args passed to your code
CommonOptionsParser op(argc, argv);
// create a new Clang Tool instance (a LibTooling environment)
ClangTool Tool(op.getCompilations(), op.getSourcePathList());

// run the Clang Tool, creating a new FrontendAction (explained below)
int result = Tool.run(newFrontendActionFactory<SomeAction>());

和下一个参数:

llvm/Debug+Asserts/bin/mytool  /somePath/someSource.mm -- 

当我在某个源文件上运行我的工具(基于 clang libtooling)时,工具会尝试查找包含的文件,例如: #import “SomeClass.h” , 或 #import<Foundation/Foundation.h>

如果找不到 header ,则会生成错误:

fatal error: ‘Foundation/Foundation.h’ file not found.

你能告诉我吗,如果你知道,我怎样才能将工具指向标准框架?以及如何将其定向到某些标题搜索路径?如何在运行工具时设置标题搜索路径?

最佳答案

我已经解决了这个问题。 您可以使用选项添加框架的路径

-Iinclude -Ipath_for_foundation/Headers

之后--

llvm/Debug+Asserts/bin/mytool  /somePath/someSource.mm -- -Iinclude -Ipath_for_foundation/Headers

但是,标准框架通常以框架名称作为前缀包含在内

#import <Foundation/Foundation.h>

框架源位于名为Headers 的文件夹中,因此 clang 无法找到它们。 所以,我要为这个问题找到解决方案。

更新:

解决方案

llvm/Debug+Asserts/bin/mytool  /somePath/someSource.mm -- -F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator6.1.sdk/System/Library/Frameworks/

关于c++ - Clang 工具 (libtooling) : set header search path to standard libs headers. 基础框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19952307/

相关文章:

C++如何比较字符串和忽略空格的指针?

c++ - 线性探测哈希函数不起作用?

c++ - 使用 ADO 插入单个记录的有效方法

php - 如何在已经建立的网站上实现 "Maintenance Mode"

已安装 python-dev 和 Python.h,但包含错误

c++ - 根据下面的作者,如果两个指针指向不同的数组,比较的第一个版本将是未定义的

C++编译过程: Place for templates

java - JIT 优化器是否优化乘法?

Haskell 插件在重新编译文件时给出旧值

c++ - 如何在 Visual Studio 2015 中使用 mongoose 构建 C++ 项目