原文地址:http://clang.llvm.org/docs/Tooling.htmlhtml
Clang爲實現須要一個程序的語法和語義信息的工具提供了基礎設施。((譯者注:爲了便於理解,再意譯一句)若是你想實現一個工具,而這個工具須要獲取一個程序的語法和語義信息,那麼恭喜你,Clang能夠爲你提供一些基礎實現。)這個文檔將給出使用不一樣的方法去實現基於Clang的工具的一個簡短介紹,包括它們的優勢和缺點。架構
LibClang是一個穩定的高層次的Clang的C語言接口。若是不肯定LibClang是你想要用的接口,只有當你有一個好的理由不用LibClang的時候,這個時候你才能夠去用別的接口。編程語言
若是遇到以下狀況,那麼就是典型的使用LibClang的時候:工具
若是遇到下列狀況,請使用LibClang:
學習
若是遇到下列狀況,請不要使用LibClang:
spa
Clang Plugins容許你在AST之上運行一些額外的動做,而這些動做做爲編譯的一部分。Plugins是運行的時候被編譯器加載的動態庫,她們很容易合併到你的構建環境中。
.net
若是遇到下列狀況,請使用Clang Plugins:
code
若是遇到下列狀況,請不要使用Clang Plugins:orm
若是遇到下列狀況,請使用LibTooling:
Clang tools是一系列基於LibTooling架構基礎之上構建的特殊的開發者工具,它們是Clang工程的一部分。它們的目標是自動化和改善C/C++開發者的核心開發活動。
咱們已經在構建或者計劃構建的做爲Clang工程的一部分例子工具備: