パスタは、Clangコンパイラツールチェーンを抽象化するC ++ライブラリであり、Clangで利用可能なものをミラーリングするAPIを使用して、コンパイルアーティファクトへの詳細なアクセスを提供します。パスタは次の目標を達成しようとします。
比較的安定しており、誰かが実際にClangヘッダー/ライブラリに直接依存する必要はないAPIのベースラインセットを提供するため、非常に簡単な配布モデルを可能にします。
APIを介して提供されるすべてのオブジェクトのメモリを適切に管理します。パスタを使用する場合、オブジェクトの寿命について心配する必要はありません。
追加情報/アクセスを提供します。ネイティブClang APIは、いかなる種類の詳細なトークン情報を提供しません。たとえば、ASTノードに関連付けられたトークンを要求することはできません。パスタは、他の同様の問題の中でも、これを解決しようとします。
まず、適性を更新してベースラインの依存関係をインストールします。たとえば、 git 、 cmake 、 ninja 、および選択したコンパイラです(C ++ 20をサポートする必要があることを忘れないでください)。すべてのサブセットで同じコンパイラを使用して、名前のマングリングの問題を避けることは便利です。 MacOSを使用している場合は、HomeBrewをインストールし、最新のcmakeとninjaとともにPython 3.9がインストールされていることを確認することをお勧めします。
そして最後にパスタ自体を構築します。
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 installMacOSでは、Clangコンパイラを手動で指定する必要がある場合があります。ただし、VCPKGは珍しい結果を引き継いで作成しようとするため、 clangまたはclang++を指定することはできません。したがって、あなたはあなたのclangへの絶対的な道を与えるべきです。
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は、LLVMの例外を除き、Apache 2.0に基づいてライセンスされています。
この研究は、防衛Advanced Research Projects Agency(DARPA)からの資金提供を受けて開発されました。表明された意見、意見、および/または発見は著者のものであり、国防総省または米国政府の公式の見解または政策を表すものとして解釈すべきではありません。
配布声明A - 公開のリリース、流通無制限の承認