基於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