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 - 批准公开发布,分销无限