使用 Microsoft Visual Studio 入门 LLVM 系统

概述

欢迎使用 Windows 上的 LLVM!本文档仅涵盖在 Windows 上使用 Visual Studio 的 LLVM,不涵盖 WSL、mingw 或 cygwin。要开始使用,您首先需要了解一些基本信息。

LLVM 由许多不同的项目组成。第一个部分是 LLVM 套件。它包含使用 LLVM 所需的所有工具、库和头文件。它包含一个汇编器、反汇编器、比特码分析器和比特码优化器。它还包含基本的回归测试,可用于测试 LLVM 工具和 Clang 前端。

第二个部分是 Clang 前端。此组件将 C、C++、Objective C 和 Objective C++ 代码编译成 LLVM 比特码。Clang 通常使用 LLVM 库来优化比特码并发出机器代码。LLVM 完全支持 COFF 对象文件格式,该格式与所有其他现有的 Windows 工具链兼容。

还有更多 LLVM 项目,本文档未对此进行讨论。

需求

在开始使用 LLVM 系统之前,请查看以下给出的需求。通过提前了解所需的硬件和软件,这可以为您节省一些麻烦。

硬件

任何能够充分运行 Visual Studio 2019 的系统都可以。包括 git 索引在内的 LLVM 源代码树大约占用 3GB。在 Release 模式下,对象文件、库和可执行文件大约占用 5GB,在 Debug 模式下则占用更多。建议使用 SSD 驱动器和 >16GB RAM。

软件

您需要 Visual Studio 2019 或更高版本,并安装最新的更新。Visual Studio 社区版就足够了。

您还需要 CMake 构建系统,因为它会生成用于构建的项目文件。CMake 与 Visual Studio 2019 捆绑在一起,因此无需单独安装。如果您确实单独安装了 CMake,则 Visual Studio 2022 将需要 CMake 3.21 或更高版本。

如果您想运行 LLVM 测试,则需要 Python。已知版本 3.8 及更高版本可以正常工作。您可以使用 Visual Studio 2019、Microsoft 商店或从 Python 网站 安装 Python。我们建议使用后者,因为它允许您调整安装选项。

您还需要 适用于 Windows 的 Git 以及 bash 工具。适用于 Windows 的 Git 也与 Visual Studio 2019 捆绑在一起。

入门

以下是快速启动和运行 LLVM 的简要说明。这些说明已在 Visual Studio 2019 和 Python 3.9.6 上进行了测试。

  1. 下载并安装 Visual Studio

  2. 在 Visual Studio 安装程序的“工作负载”选项卡中,选择“使用 C++ 进行桌面开发”工作负载。在“单个组件”选项卡下,选择“适用于 Windows 的 Git”。

  3. 完成 Visual Studio 安装。

  4. 下载并安装最新的 Python 3 版本

  5. 在第一个安装屏幕中,选择“为所有用户安装启动器”和“将 Python 添加到 PATH”。这将允许为所有用户安装 psutil 以进行回归测试,并使 Python 可从命令行访问。

  6. 在第二个安装屏幕中,选择(同样)“为所有用户安装”,如果您想开发 lldb,选择“下载调试二进制文件”将很有用。

  7. 完成 Python 安装。

  8. 以**管理员**身份运行“适用于 VS 2019 的开发人员命令提示符”。此命令

    提示符提供指向 Visual Studio 和已安装工具的正确路径和环境变量。

  9. 在终端窗口中,键入以下命令

    c:
    cd \
    

您可以将 llvm 源代码安装在 c:\llvm 以外的其他位置,但不要安装到包含空格的路径(例如 c:\Documents and Settings\...),因为这会导致失败。

  1. 注册 Microsoft 调试接口访问 (DIA) DLL

    regsvr32 "%VSINSTALLDIR%\DIA SDK\bin\msdia140.dll"
    regsvr32 "%VSINSTALLDIR%\DIA SDK\bin\amd64\msdia140.dll"
    

DIA 库是 LLVM PDB 测试和 LLDB 开发 所必需的。

  1. 安装 psutil 并获取 LLVM 源代码

    pip install psutil
    git clone https://github.com/llvm/llvm-project.git llvm
    

您可以从 发行版页面 下载压缩的源代码分发版,而不是使用 git clone。选择最后一个链接:Source code (zip) 并使用 Windows 资源管理器内置的 zip 支持或任何其他解压缩工具解压缩下载的文件。

  1. 最后,使用 CMake 配置 LLVM

    cmake -S llvm\llvm -B build -DLLVM_ENABLE_PROJECTS=clang -DLLVM_TARGETS_TO_BUILD=X86 -Thost=x64
    exit
    

LLVM_ENABLE_PROJECTS 指定您要构建的任何其他 LLVM 项目,而 LLVM_TARGETS_TO_BUILD 选择编译器目标。如果省略 LLVM_TARGETS_TO_BUILD,则默认情况下会构建所有目标,从而减慢编译速度并占用更多磁盘空间。有关如何配置 LLVM 构建的详细信息,请参阅 LLVM CMake 指南

cmake 命令行工具与 Visual Studio 捆绑在一起,但其 GUI 并非如此。您可以安装 CMake 以使用其 GUI 来更改 CMake 变量或修改上述命令行。

  • 安装 CMake 后,最简单的方法是启动 CMake GUI,选择您已将 LLVM 解压缩到的目录,默认选项应该都很好。无论其他任何内容如何,您可能真正想要更改的一个选项可能是 CMAKE_INSTALL_PREFIX 设置,以便在编译完成后选择要安装到的目录,尽管安装对于使用 LLVM 并不是强制性的。另一个重要的选项是 LLVM_TARGETS_TO_BUILD,它控制构建中包含的 LLVM 目标架构。

  • CMake 为所有构建类型生成项目文件。要选择特定的构建类型,请使用 VS IDE 中的“配置管理器”或在使用 MSBuild 时使用 /property:Configuration 命令行选项。

  • 默认情况下,CMake 生成的 Visual Studio 项目文件使用 32 位工具集。如果您在 64 位版本的 Windows 上进行开发并希望使用 64 位工具集,请在生成 Visual Studio 解决方案时传递 -Thost=x64 标志。这需要 CMake 3.8.0 或更高版本。

  1. 启动 Visual Studio 并选择配置

在您创建项目文件的目录中,将有一个 llvm.sln 文件,只需双击该文件即可打开 Visual Studio。默认的 Visual Studio 配置为**调试**,它速度较慢,并在磁盘上生成大量调试信息。目前,我们建议为 LLVM 项目选择**发布**配置,这将构建速度最快,或者选择**RelWithDebInfo**,它的体积也比发布版大几倍。另一种技术是在发布模式下构建所有 LLVM,并仅针对您实际需要调试的特定库或源文件更改编译器标志,禁用优化并启用调试信息。

  1. 在 Visual Studio 中测试 LLVM

您可以通过仅构建“check-all”项目来运行 LLVM 测试。测试结果将显示在 VS 输出窗口中。构建成功后,您便已验证了有效的 LLVM 开发环境!

您不应该看到任何意外的失败,但会看到许多不受支持的测试和预期的失败

114>Testing Time: 1124.66s
114>  Skipped          :    39
114>  Unsupported      : 21649
114>  Passed           : 51615
114>  Expectedly Failed:    93
========== Build: 114 succeeded, 0 failed, 321 up-to-date, 0 skipped ==========``

手动安装的替代方案

作为上述步骤的替代方案,为了简化安装过程,您可以使用 Chocolatey 作为包管理器。在 安装 Chocolatey 后,在管理员 shell 中运行以下命令以安装所需的工具

choco install -y git cmake python3
pip3 install psutil

还有一个包含整个构建工具链的 Windows Dockerfile。这可用于使用与主机安装不同的工具链测试构建,或创建构建服务器。

后续步骤

  1. 阅读文档。

  2. 说真的,阅读文档。

  3. 请记住,我们已经两次警告过您要阅读文档。

在命令行上测试 LLVM:

可以通过更改到 llvm 源代码目录并运行以下命令来运行 LLVM 测试

c:\llvm> python ..\build\Release\bin\llvm-lit.py llvm\test

此示例假设 Python 位于您的 PATH 变量中,这将在 Python 安装期间选择“将 Python 添加到 PATH”后发生。如果您在 Python 安装之前打开了命令窗口,则需要关闭并重新打开它才能获取更新的 PATH。

可以使用以下命令运行特定的测试或测试目录

c:\llvm> python ..\build\Release\bin\llvm-lit.py llvm\test\Transforms\Util

构建 LLVM 套件:

  • 仍然可以单独构建项目,但要构建所有项目,不要只是在批处理构建中选择所有项目(因为有些项目旨在用作配置项目),而是选择并仅构建 ALL_BUILD 项目以构建所有内容,或者构建 INSTALL 项目,它首先构建 ALL_BUILD 项目,然后将 LLVM 头文件、库和其他有用的内容安装到您在首次配置 CMake 时由 CMAKE_INSTALL_PREFIX 设置指定的目录中。

  • 斐波那契项目是一个使用 JIT 的示例程序。修改项目的调试属性以提供数值命令行参数,或从命令行运行它。程序将打印相应的斐波那契值。