rust inkwell/llvm-sys无法在windows上编译

brccelvz  于 4个月前  发布在  Windows
关注(0)|答案(1)|浏览(68)

我正在使用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

字符串

bihw5rsg

bihw5rsg1#

原来llvm-sys不理解LLVM路径中的空格(LLVM的默认安装路径是C:\Program Files\LLVM\)。所以整个解决方案将安装到没有空格的目录中:
(删除LLVM,如果你已经有一个,->安装cmake和Visual Studio(我使用2022))
(一切都在VS Developer Console中完成)
1.在Visual Studio中,你需要确保你有Visual C++ ATL v141-143C++ ATL for latest v141-143

  1. git clone所需的llvm版本使用:git clone https://github.com/llvm/llvm-project.git --branch release/16.x(将发布版本更改为您需要的版本,它必须具有release/<major>.x
  2. cd llvm-project -> cd llvm -> mkdir build -> cd build
  3. cmake .. "-DCMAKE_INSTALL_PREFIX=C:\LLVM\"(如果需要,可以添加更多cmake标志)
    1.配置完成后(不要退出构建目录):cmake --build . --target install --config Release
    1.等待编译完成,然后检查C:\LLVM\bin是否在你的PATH中,如果没有就添加它。完成后,这将允许llvm-sys/inkwell编译。

相关问题