Build 如何使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.

我正在调整用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.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!");
}