Swifty-LLVM 是一个用于 LLVM 编译器基础设施的 Swift 接口,目前封装了 LLVM 的 C API。
另请参阅:swift-llvm-bindings
此软件包需要 Swift 5.9
此软件包需要 LLVM 17。LLVM 的主要版本不具有互换性或向后兼容性。
如果您使用此软件包进行开发,我们强烈建议使用启用了断言的 LLVM,例如 这些;否则,很容易在不知情的情况下违反 LLVM 的前提条件。此软件包的 devcontainer(位于 .devcontainer
子目录中)已预先安装了启用断言的 LLVM 构建版本,分别位于 /opt/llvm-Debug
和 /opt/llvm-MinSizeRel
中。
如果 您想使用 Swift Package Manager 构建,并且选择以其他方式获取 LLVM,则需要安装包含 llvm-config
可执行文件的 LLVM,我们将使用它为 LLVM 创建一个 pkg-config
文件。
配置:选择一个构建目录和一个 CMake构建类型(通常为 Debug
或 Release
),然后,其中 <LLVM>
是 LLVM 安装的根目录路径,
cmake -D CMAKE_BUILD_TYPE=<build-type> \
-D LLVM_DIR=<LLVM>/lib/cmake/llvm \
-G Ninja -S . -B <build-directory>
(在 Windows 上,将 shell 的行延续字符替换为 \
,或者直接删除换行符和反斜杠)。
如果要运行测试,请添加 -DBUILD_TESTING=1
。
注意: 在 macOS 上,如果您没有使用 Xcode 的默认工具链,您可能需要 -D CMAKE_Swift_COMPILER=swiftc
以防止 CMake 使用 Xcode 的默认 swift
。
如果此命令失败,可能是因为您安装的 LLVM 没有 CMake 支持;我们建议您尝试使用 这些 软件包之一。
构建:
cmake --build <build-directory>
测试(在步骤 1 中需要 -DBUILD_TESTING=1
)
ctest --parallel --test-dir <build-directory>
生成 Xcode 项目:选择一个构建目录,然后,其中 <LLVM>
是 LLVM 安装的根目录路径,
cmake -D LLVM_DIR=<LLVM>/lib/cmake/llvm \
-G Xcode -S . -B <build-directory>
如果要运行测试,请添加 -DBUILD_TESTING=1
。
开始使用:在构建目录中打开 .xcodeproj
文件,并使用 Xcode 的 UI 进行构建和测试。
注意: 至少在 Swift 6.0 发布之前,Windows 上不支持 SPM 构建。
首先,您需要创建一个特定于您安装的 pkgconfig
文件,并使其对您的构建工具可见。我们使用以下 bash
脚本,位于此项目的顶层目录中
./Tools/make-pkgconfig.sh ./llvm.pc
如果您在 Windows 上,您的 git
安装(Swift 所需)包含一个 bash
可执行文件,因此您可以执行以下操作
C:\Program Files\Git\bin\bash ./Tools/make-pkgconfig.sh ./llvm.pc
上面的命令会在当前目录中生成 llvm.pc
,并将内容打印到终端。您可以将其目录添加到 PKG_CONFIG_PATH
环境变量中,以便与命令行工具一起使用
export PKG_CONFIG_PATH=$PWD
或者您可以将其放在 pkg_config
已经搜索的位置(需要与 Xcode 一起使用)
sudo mkdir -p /usr/local/lib/pkgconfig && sudo mv llvm.pc /usr/local/lib/pkgconfig/
设置好 llvm.pc
后,您应该能够使用 Swift Package Manager 构建此项目
swift build -c release
要测试您的编译器,
swift test -c release --parallel
platforms: [.macOS("xxx")]
添加到 Package.swift
,其中 xxx
是您的 macOS 版本,以解决有关“对象文件是为比链接的版本更新的 macOS 版本构建的”的警告。llvm.pc
中添加 zstd
库的路径。