基于LLVM架构的C/C++/Objective-C编译器前端
Clang传送门html
简单上图看一眼两者之间的关系
前端
$ git clone https://git.llvm.org/git/llvm.git/
$ cd llvm/tools
$ git clone https://git.llvm.org/git/clang.git/
注意 :
clang的下载目录应在llvm/tools下(如图)
git
$ brew install cmake
$ brew install ninja
ninja若是安装失败,能够直接从github获取release版放入【/usr/local/bin】目录中
ninja的GitHub传送门github
同时在LLVM源码同级目录下新建一个【llvm_release】目录(最终编译文件会在llvm_release文件夹路径下)
$ cd llvm_build
$ cmake -G Ninja ../llvm -DCMAKE_INSTALL_PREFIX=‘安装路径’(本机为/Users/xxx/Desktop/LLVM/llvm_release)
swift
依次执行编译、安装指令
$ ninja
xcode
$ ninja install
架构
最终生成build.ninja以及llvm_release文件夹位置以下图
ide
$ cd llvm_xcode
$ cmake -G Xcode ../llvm
add_clang_subdirectory(JJPlugin)
,小括号里是插件目录名add_llvm_loadable_module(JJPlugin JJPlugin.cpp)
$ touch JJPlugin.cpp
(以下图黄色箭头所示)$ cmake -G Xcode ../llvm
-Xclang -load -Xclang 动态库路径 -Xclang -add-plugin -Xclang 插件名称
而后在XcodeHacking目录下进行命令行,将XcodeHacking的内容剪切到Xcode内部模块化
$ sudo mv HackedClang.xcplugin `xcode-select -print-
path`/../PlugIns/Xcode3Core.ideplugin/Contents/SharedSupport/Developer/Library/Xcode/Plug-ins工具
$ sudo mv HackedBuildSystem.xcspec `xcode-select -print- path`/Platforms/iPhoneSimulator.platform/Developer/Library/Xcode/Specifications
Clang 的开源给了咱们更多的操做空间,咱们能够利用clang的API针对语法树(AST)进行相应的分析和处理,进一步完善咱们的需求,也能更好地提高咱们代码的规范和质量。
附上关于语法树AST的资料:
https://clang.llvm.org/doxygen/namespaceclang.html
https://clang.llvm.org/doxygen/classclang_1_1Decl.html
https://clang.llvm.org/doxygen/classclang_1_1Stmt.html