iOS之武功秘籍⑰: Clang插件开发

2021-03-05  本文已影响0人  長茳

iOS之武功秘籍 文章汇总

写在前面

上篇我们介绍了LLVM的编译流程,接下来我们就来玩玩怎么做插件吧.....

本节可能用到的秘籍Demo

一、配置LLVM环境

特别提醒:

如果以上3点,你确定能接受,那我们就开始吧.

① LLVM下载

github下载LLVM相关资源库:

② LLVM编译

由于最新的LLVM只支持cmake来编译,所以需要安装cmake

②.1 安装cmake

②.2 编译LLVM

有两种编译方式:

②.2.1 通过xcode编译LLVM

注意:

  • build文件夹是存放cmake生成的Xcode文件的.放哪里都可以.
  • cmake编译的对象是llvm文件.所以使用cmake -G Xcode ../llvm编译并生成Xcode文件时,请核对llvm的文件路径.
* 添加`clang`和`clangTooling`两个`Target`,并完成两个`target`的编译[图片上传失败...(image-b63796-1614944397110)]
* 编译成功后,我们的准备工作就完成了.可以正式开始插件开发了
②.2.2 通过ninja编译LLVM
cd build

//注意DCMAKE_INSTALL_PREFIX后面不能有空格
cmake -G Ninja ../llvm -DCMAKE_INSTALL_PREFIX= 安装路径(本机为/ Users/xxx/xxx/LLVM/llvm_release)
ninja

ninja install

小编这里选择的是用Xcode编译的.

二、自定义插件

其原理主要分为三步

嘿嘿,然后在终端中测试插件
llvm的同级目录创建我们的ClangDemo.cd到ClangDemo`文件夹执行下面指令

//命令格式
自己编译的clang文件路径  -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk/ -Xclang -load -Xclang 插件(.dyld)路径 -Xclang -add-plugin -Xclang 插件名 -c 源码路径

//例子
/Users/changjiang/Desktop/iOS之武功秘籍\ ⑰:Clang插件开发/build/Debug/bin/clang -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator14.4.sdk/ -Xclang -load -Xclang /Users/changjiang/Desktop/iOS之武功秘籍\ ⑰:Clang插件开发/build/Debug/lib/CJPlugin.dylib -Xclang -add-plugin -Xclang CJPlugin -c /Users/changjiang/Desktop/iOS之武功秘籍\ ⑰:Clang插件开发/ClangDemo/ClangDemo/ViewController.m

三、Xcode集成插件

① 加载插件

打开测试项目,在target->Build Settings -> Other C Flags 添加以下内容

 -Xclang -load -Xclang /Users/changjiang/Desktop/iOS之武功秘籍\ ⑰:Clang插件开发/build/Debug/lib/CJPlugin.dylib -Xclang -add-plugin -Xclang CJPlugin

/Users/changjiang/Desktop/iOS之武功秘籍\ ⑰:Clang插件开发/build/Debug/lib/CJPlugin.dylib是自己的CJPlugin.dylib绝对路径

② 设置编译器

接着Command + B编译,报错

由于clang插件需要使用对应的版本去加载,如果版本不一致会导致编译失败,如下所示

写在后面

通过这个本篇的小插件,应该对语法树、编译流程,有了更深刻的认识吧...

和谐学习,不急不躁.我还是我,颜色不一样的烟火.

上一篇下一篇

猜你喜欢

热点阅读