你如何告诉 Clang 编译器调用使用框架
How do you tell a Clang CompilerInvocation to use a framework?
我有使用 Clang 静态库构建CompilerInvocation
的代码。我想告诉该调用使用特定的框架,就像使用 -framework
Clang 前端选项一样。特别是,我正在寻找使用框架的这些"副作用":
- 编译器使用框架搜索路径在系统上定位框架;
- 编译器知道在哪里可以找到通过
<Framework/Header.h>
等路径标识的框架标头。
这一点上,我认为我已经在 CompilerInvocation
类的选项子对象中查找了所有内容,我可以识别的最接近的与此相关的内容是标题搜索路径。我似乎找不到一种方法来告诉CompilerInvocation
寻找特定的框架。
这应该如何发生?我使用的是手动构建的CompilerInvocation
而不是通过命令行参数构建它,因为这似乎是将内存缓冲区作为源单元而不是文件传递的唯一方法。
我还没有找到通过 CompilerInvocation
对象执行此操作的方法,但是您可以使用 clang:: createInvocationFromCommandLine
从命令行参数中获取CompilerInvocation
。使用 -framework
参数时,生成的调用可以正确#include
框架标头。这不是很好,但它有效(除了编译器会抱怨框架是未使用的链接器输入,可能是因为没有发生链接阶段)。
当然,这意味着必须存在一条通过CompilerInvocation
的方法,因为这是唯一返回的东西。不过,我可以相信从框架路径获取框架的逻辑是私有的。
相关文章:
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- 为什么使用 "this" 指针调用派生成员函数?
- 函数调用中参数的顺序重要吗
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 在c++类上调用void函数
- 使用Qt框架在c ++类中创建API调用
- 在Google测试框架中,如何期望函数调用或其他功能调用
- 如何使用gmock框架模拟c++单元测试中的fork和execlp系统调用
- C++ - QT 框架 / 无法调用方法
- 你如何告诉 Clang 编译器调用使用框架
- 使用 Google C++ 模拟框架 (Google Mock) (V1.5) 将任意参数传递给调用的方法
- 开放框架:绘制函数被多次调用
- 我如何测试一个调用是在谷歌测试延迟后使用嘲讽框架进行的
- 诸如Corba(如TAO)、Thrift、D-Bus、ICE等框架的进程内调用性能
- 无法从.net框架调用atlcom对象
- 理解C/ c++中函数调用的堆栈框架
- 使用给定框架调用/引用另一个类C++变量或函数