Ber*_*rgP 7 compiler-construction xcode plugins clang ios
我已经在本教程的clang帮助下创建了我的自定义插件,
我想在我的Xcode iOS项目上自动运行它.
我需要运行以下附加命令clang,
-Xclang -load \
-Xclang ~/static_analysis/llvm/Debug+Asserts/lib/libPluginExample.so \
-Xclang -plugin -Xclang -example-plugin \
Run Code Online (Sandbox Code Playgroud)
我想保存Xcode生成的所有其他命令,因为很难为每个Xcode项目创建和传递这些命令.这就是我选择使用clang插件而不是clang工具的原因.
我怎么能做到这一点?
或者如何提取xcode生成的编译器标志,以便在clang工具中使用它们?(因为,为了正确使用工具,我需要指定所有包含目录,以及所有源代码和所有框架)
更新:
我在Project中添加了很多命令
设置 - >构建阶段 - >编译源(双击源)
,但在编译时有错误(插件是来自clang源的标准示例libPrintFunctionNames.dylib):
错误:无法加载插件'/Users /...llvm/Debug+Asserts/lib/libPrintFunctionNames.dylib':'dlopen(/ Users /.../ llvm/Debug + Asserts/lib/libPrintFunctionNames.dylib,9) :未找到符号:__ ZN5clang11ASTConsumer21HandleInterestingDeclENS_12DeclGroupRefE引用自:/Users /.../llvm/Debug+Asserts/lib/libPrintFunctionNames.dylib预期在/Users/.../llvm/Debug+Asserts/lib/libPrintFunctionNames中的flat namespace. dylib'命令/应用程序/ Xcode 2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang失败,退出代码为1
我试图用libPrintFunctionNames.a而不是libPrintFunctionNames.dylib,但它没有帮助.
也许原因是我在llvm和clang的分离源文件上构建了我的插件,而在xcode中我使用了其他版本的clang.我会检查一下.
我将在构建选项OTHER_CFLAGS中指定其他Clang选项.你可以这样做
target/project Build Settings -> Apple LLVM 5.0 - Custom Compiler Flags -> Other C Flags
Run Code Online (Sandbox Code Playgroud)
或者,您可以指定OTHER_CFLAGS xcodebuild,例如,
xcodebuild -scheme SampleProject build OTHER_CFLAGS="-Xclang -load -Xclang /path/to/libPrintFunctionNames.dylib -Xclang -plugin -Xclang print-fns"
Run Code Online (Sandbox Code Playgroud)
xcodebuild 当您不想维护仅在OTHER_CFLAGS中有所不同的2个目标时很方便.
但是你是对的,看起来你真的需要链接相同的库,因为clang本身是链接的.至少我从http://llvm.org/releases/download.html下载了Clang + LLVM 3.3二进制文件,用下载的库构建了这个插件,它与http://llvm.org的 clang一起工作,但是没有使用来自Xcode的clang - 我遇到以下错误:
error: unable to find plugin 'print-fns'
Run Code Online (Sandbox Code Playgroud)
我已经创建了构建Clang插件的Xcode工作区,并展示了如何在默认的iOS应用程序中尝试使用它.您可以在https://github.com/vsapsai/ClangPluginExample找到它
| 归档时间: |
|
| 查看次数: |
7305 次 |
| 最近记录: |