LLVM学习--外部项目
不包含于核心LLVM和Clang存储库的项目需要单独下载。在本章中,我们将介绍各种其他官方LLVM项目,并介绍如何构建和安装它们。仅仅对核心LLVM工具感兴趣的读者可以跳过本章,或者在需要的时候翻阅。
在本章中,我们将介绍以下项目安装方法。
Clang外部工具
Compiler-RT
DragonEgg
LLVM测试套件
LLDB
libc++
除了本章所设计的项目之外,还有两个在本书范围之外的官方LLVM项目,Polly 以及lld(目前正在开发的LLVM链接器)
预构建的二进制包不包含本章中提及的任何外部项目(Compiler-RT)因此,与上一章不同,我们将仅仅介绍如何下载源代码并自行构建它们。
2.1 Clang外部项目介绍
LLVM中最引人注目的设计就是将后端与前段隔离为两个独立的项目,即LLVM核心和Clang。LLVM开始的时候是以LLVM中间表示为中心的一组工具,并且依赖于可自行修改GCC将高级语言程序转换为独有的IR形式,并存储在位码bitcode 文件中。位码是一个术语,模仿了java字节码的命名。Clang作为LLVm团队专门设街的第一个前端。是LLVM项目的一个重要的里程碑,有着与LLVM核心相同的代码质量,清晰的文档和库组织结构。不仅可以将C和C++程序转换为LLVM IR,还可以作为灵活的编译器驱动程序对整个编译过程进行监督,以便尽可能保持与GCC的兼容性。
我们后面会称Clang为前端程序,而不是驱动程序,它负责将C和C++程序转换为LLVM IR。Clang 库的一大亮点是可以用于编写强大的工具,比如C++代码重构工具和源代码分析工具,从而使C++程序员可以自由的研究C++的热点问题,Clang预包装的一些工具可以帮助你了解如何利用这些库。
Clang Check 能够执行语法检查,还能应用快速修复以解决常见的问题,还可以转储任何程序的内部Clang抽象语法树AST表示。
Clang Format 包含一个工具和一个LibFormat库,不仅可以缩进代码,还可以将任何一部分C++代码格式化为任何样式,以符合LLVM编码标准以及Google Chromium ,Mozilla或者Webkit的样式指南。
clang-tools-extra 存储库是建立在Clang智商的多个应用程序的集合,能够读取大型C或者C++代码库,并执行各种代码重构和分析。我们在下面列出这个包中的一些工具,但是不是全部。
Clang Modernizer 是一个代码重构工具,用于扫描C++代码并更改旧样式的结构,以符合比较新标准提出的更现代的样式。
Clang Tidy 是一个错误检查工具,用于检查违反LLVM或者google 编码标准的常见编程错误。
Modularize 可以帮助识别适合组成模块的C++头文件,
PPTrace 是一个简单的工具,用于跟踪Clang C++预处理器的活动。