Build 如何使Cargo同时执行构建脚本和使用特定于目标的链接器?
我正在调整用Rust编写的库的构建过程。目标是让它在带有MSVCC的Windows上编译。由于某些特定的依赖关系,我必须确保使用了正确的MSVCC链接器,因此我为Cargo设置了一个特定于项目的配置文件:Build 如何使Cargo同时执行构建脚本和使用特定于目标的链接器?,build,linker,rust,rust-cargo,Build,Linker,Rust,Rust Cargo,我正在调整用Rust编写的库的构建过程。目标是让它在带有MSVCC的Windows上编译。由于某些特定的依赖关系,我必须确保使用了正确的MSVCC链接器,因此我为Cargo设置了一个特定于项目的配置文件: [target.x86_64-pc-windows-msvc] linker = "C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/bin/amd64/link.exe" 现在运行cargo build时,我的构建脚本build.
[target.x86_64-pc-windows-msvc]
linker = "C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/bin/amd64/link.exe"
现在运行cargo build
时,我的构建脚本build.rs
不再执行。由于脚本为重要库提供了路径,因此构建过程最终会失败
要使用Visual Studio 12在Windows 10(64位)下重现此问题,请按如下方式创建一个项目:
| build.rs
|货舱
|
+---.货物
|配置
|
\---src
梅因
/build.rs:
./Cargo.toml:
[package]
name = "some_binary"
version = "0.1.0"
build = "build.rs"
.货物/配置:
[target.x86_64-pc-windows-msvc]
linker = "C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/bin/amd64/link.exe"
src/main.rs:
当您调用货物构建
时,链接应失败
链接:致命错误LNK1181:无法打开输入文件
“advapi32.lib”
更新:
目前,当明确指定VS链接器时,Rust的稳定版本无法包含正确的库(即Windows SDK)。因此,无法链接生成脚本,生成失败
解决方案:
最近夜间的变化解决了这个问题。只需切换到夜间或等待,直到它被合并到稳定的版本
[target.x86_64-pc-windows-msvc]
linker = "C:/Program Files (x86)/Microsoft Visual Studio 12.0/VC/bin/amd64/link.exe"
fn main() {
println!("Hello, world!");
}