Clang Tool(libtooling):设置标题库标题的标题搜索路径。基础框架

时间:2013-11-13 11:17:02

标签: 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)时,工具尝试查找包含的文件,f.e: #import “SomeClass.h”#import<Foundation/Foundation.h>

如果它找不到标题,则会产生错误:

  

致命错误:找不到'Foundation / Foundation.h'文件。

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

1 个答案:

答案 0 :(得分:7)

我已经解决了这个问题。 您可以使用选项

添加框架的路径
  

-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/