【问题标题】:How do you tell a Clang CompilerInvocation to use a framework?你如何告诉 Clang CompilerInvocation 使用框架?
【发布时间】:2017-01-12 04:04:43
【问题描述】:

我有使用 Clang 静态库构建 CompilerInvocation 的代码。我想告诉该调用使用特定的框架,就像使用 -framework Clang 前端选项一样。特别是,我正在寻找使用框架的这些“副作用”:

  • 编译器使用框架搜索路径在系统上定位框架;
  • 编译器知道在哪里可以找到通过 <Framework/Header.h> 之类的路径标识的框架头。

在这一点上,我想我已经在CompilerInvocation 类的选项子对象中到处找了,我能确定的最接近的就是标题搜索路径。我似乎找不到方法告诉CompilerInvocation 寻找特定的框架。

这应该怎么发生?我正在使用手动构建的CompilerInvocation,而不是通过命令行参数构建它,因为这似乎是将内存缓冲区作为源单元而不是文件传递的唯一方法。

【问题讨论】:

    标签: c++ clang llvm


    【解决方案1】:

    我还没有找到通过CompilerInvocation 对象执行此操作的方法,但是您可以使用clang:: createInvocationFromCommandLine 从命令行参数中获取CompilerInvocation。使用-framework 参数时,生成的调用可以正确地#include 框架标头。这不是很好,但它可以工作(除了编译器会抱怨框架是未使用的链接器输入,可能是因为没有发生链接阶段)。

    当然,这意味着通过CompilerInvocation 的方式必须存在,因为这是唯一返回的东西。不过,我可以相信从框架路径获取框架的逻辑是私有的。

    【讨论】:

      猜你喜欢
      • 2016-11-05
      • 1970-01-01
      • 1970-01-01
      • 2011-11-29
      • 1970-01-01
      • 2018-07-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多