我正在使用LLVM在Rust中使用inkwell构建一个小型编译器(inkwell使用llvm-sys,所以它也与之相关)。
首先,在llvm的github上编译的windows二进制文件**不包括在llvm上构建所需的工具。**此外,在从源代码编译llvm之后,我遇到了无法编译上述crate的问题,出现了不同的错误,比如“Files/LLVM/Target.h not found!"等。
首先是一些对某些人有效的解决方案:
1.清理项目(cargo clean
)
1.将“/LLVM/bin”添加到env路径。
1.如果您使用的是inkwell,您仍然需要在Cargo.toml
中引用相应的llvm-sys版本:
llvm-sys-160 = { package="llvm-sys", version = "160.1.4" } # For LLVM 16.x
字符串
1条答案
按热度按时间bihw5rsg1#
原来llvm-sys不理解LLVM路径中的空格(LLVM的默认安装路径是
C:\Program Files\LLVM\
)。所以整个解决方案将安装到没有空格的目录中:(删除LLVM,如果你已经有一个,->安装cmake和Visual Studio(我使用2022))
(一切都在VS Developer Console中完成)
1.在Visual Studio中,你需要确保你有
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标志)1.配置完成后(不要退出构建目录):
cmake --build . --target install --config Release
1.等待编译完成,然后检查
C:\LLVM\bin
是否在你的PATH中,如果没有就添加它。完成后,这将允许llvm-sys/inkwell编译。