我正在与 LLVM 合作,使用 inkwell 在 Rust 中构建一个小型编译器(inkwell 使用 llvm-sys,所以它也与之相关)。
首先,在 llvm 的 github 上编译的 Windows 二进制文件不包括在 llvm 之上构建所需的工具。另外,在从源代码编译 llvm 后,我遇到了无法编译所述板条箱的问题,有不同的错误说明比如“Files/LLVM/Target.h 未找到!”等
首先是一些对某些人有用的解决方案:
清理项目(
cargo clean
)
将“
如果您使用的是inkwell,您仍然需要在
Cargo.toml
中引用适当的llvm-sys版本:
llvm-sys = { version = "160.1.4"} # For LLVM 16.x
事实证明 llvm-sys 不理解 LLVM 路径中的空格(LLVM 的默认安装路径是
C:\Program Files\LLVM\
)。
所以整个解决方案将其安装到没有空格的目录中:
(删除 LLVM,如果你已经有的话,-> 安装 cmake 和 Visual Studio(我用的是 2022))
(一切都是通过 VS 开发者控制台完成的)
Visual C++ ATL v141-143
或 C++ ATL for latest v141-143
git clone https://github.com/llvm/llvm-project.git --branch release/16.x
(将发布版本更改为您需要的版本,它必须具有release/<major>.x
的格式)cd llvm-project
-> cd llvm
-> mkdir build
-> cd build
cmake .. "-DCMAKE_INSTALL_PREFIX=C:\LLVM\"
(如果需要,可以添加更多 cmake 标志)cmake --build . --target install --config Release
C:\LLVM\bin
是否在您的 PATH 中,如果没有添加它。
完成,这应该允许构建 llvm-sys/inkwell。