Паста - это библиотека C ++, которая абстрагирует инструмент инструментов Clang Compiler и предоставляет подробный доступ к артефактам компиляции с использованием API, которые отражают те, которые доступны в Clang. Паста пытается достичь следующих целей:
Предоставьте базовый набор API, который является относительно стабильным и не требует от кого -то, действительно зависеть от заголовков/библиотек Clang, что позволяет значительно более легкую модель распределения.
Правильно управлять памятью для всех объектов, предоставленных через API. Не нужно беспокоиться о жизни объектов при использовании пасты.
Предоставить дополнительную информацию/доступ. Нативные API Clang не предоставляют подробную информацию о токене любого рода. Например, нельзя попросить токены, связанные с узлом AST. Паста пытается решить это, среди других подобных вопросов.
Во -первых, обновите способность и установите базовые зависимости, например, git , cmake , ninja и ваш выбор компилятора (помните, что ему нужно поддерживать C ++ 20). Полезно использовать один и тот же компилятор в каждом подмножестве, чтобы избежать некоторых проблем с умолчанием. Если вы используете MacOS, мы рекомендуем установить HomeBrew и обеспечить установку 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 - утверждено для публичного освобождения, дистрибуция неограниченное