我想将其作为解决方案而不是问题发布,因为我似乎没有很多人真正解释如何解决这个问题。
我正在与 LLVM 合作,使用 inkwell 在 Rust 中构建一个小型编译器(inkwell 使用 llvm-sys,所以它也与之相关)。
首先,在 llvm 的 github 上编译的 Windows 二进制文件不包括在 llvm 之上构建所需的工具。另外,在从源代码编译 llvm 后,我遇到了无法编译所述板条箱的问题,有不同的错误说明比如“Files/LLVM/Target.h 未找到!”等..
首先是一些对某些人有用的解决方案:
cargo clean
)Cargo.toml
中引用适当的llvm-sys版本:llvm-sys = { version = "160.1.4"} # For LLVM 16.x
在帖子下寻找实际解决方案
事实证明 llvm-sys 不理解 LLVM 路径中的空格。 所以整个解决方案将其安装到没有空格的目录中:
PS。 (删除 LLVM,如果你已经有的话,-> 安装 cmake 和 Visual Studio(我用的是 2022))
PS2。 (一切都是通过 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
(将发布版本更改为您需要的版本)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。