pasta
1.0.0
Pasta是一個C ++庫,它可以抽象Clang編譯器工具鏈,並使用反映在Clang中可用的API提供了詳細的對編譯偽像的訪問。麵食試圖實現以下目標:
提供相對穩定的基線API集,不需要某人實際上直接取決於叮噹聲/庫,從而實現了非常容易的分發模型。
正確管理通過API提供的所有對象的內存。使用麵食時,不必擔心對象壽命。
提供其他信息/訪問。本機clang API不提供任何形式的詳細令牌信息。例如,一個人不能要求與AST節點關聯的令牌。麵食試圖解決此問題,以及其他類似的問題。
首先,更新能力並獲得安裝基線依賴關係,例如git , cmake , ninja和您選擇的編譯器(請記住,它需要支持C ++ 20)。在每個子集中使用相同的編譯器以避免某些名稱雜交問題很有用。如果您使用的是MacOS,則建議我們安裝自製釀酒廠,並確保安裝了Python 3.9,以及最新的cmake和ninja 。
最後建造麵食本身。
git clone https://github.com/trailofbits/pasta.git
mkdir -p pasta-build
cd pasta-build
cmake
-DCMAKE_BUILD_TYPE=Release
-DPASTA_ENABLE_INSTALL=ON
-GNinja
../pasta
ninja install在MACOS上,您可能需要手動指定Clang編譯器。但是,您不能只指定clang或clang++ ,因為那時VCPKG將嘗試接管並產生異常結果。因此,您應該給您的叮噹聲。
git clone https://github.com/trailofbits/pasta.git
mkdir -p pasta-build
cd pasta-build
cmake
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_C_COMPILER= ` which clang `
-DCMAKE_CXX_COMPILER= ` which clang++ `
-DPASTA_ENABLE_INSTALL=ON
-GNinja
../pasta
ninja install意大利面是根據Apache 2.0許可證獲得許可的。意大利面的大部分是從Clang API中半自動化的。 Clang還獲得了Apache 2.0的許可,而LLVM例外。
這項研究是通過國防高級研究項目局(DARPA)的資金開發的。表達的觀點,觀點和/或發現是作者的觀點,不應被解釋為代表國防部或美國政府的官方觀點或政策。
分銷聲明A - 批准公開發布,分銷無限