【发布时间】:2021-11-08 23:06:02
【问题描述】:
假设我有像/foo/bar这样的嵌套包
现在我想用不同的目标编译这些包。
那么,如何使用像cargo build --release这样的构建命令来编译目标为wasm32-unknown-unknown的/foo包和目标为x86_64-unknown-linux-gnu的/foo/bar包?
【问题讨论】:
标签: rust cross-compiling rust-cargo
假设我有像/foo/bar这样的嵌套包
现在我想用不同的目标编译这些包。
那么,如何使用像cargo build --release这样的构建命令来编译目标为wasm32-unknown-unknown的/foo包和目标为x86_64-unknown-linux-gnu的/foo/bar包?
【问题讨论】:
标签: rust cross-compiling rust-cargo
您可以在configuration 文件中指定默认目标(在命令行上没有明确的--target 选项时将使用该目标)。因此,我建议您创建以下文件:
/foo/.cargo/config.toml
[build]
target = "wasm32-unknown-unknown"
/foo/bar/.cargo/config.toml
[build]
target = "x86_64-unknown-linux-gnu"
为确保在构建/foo 时构建/foo/bar,您可以使用build script:
/foo/build.rs
fn main() {
println!("cargo:rerun-if-changed=bar");
let profile = std::env::var("PROFILE").unwrap();
let status = std::process::Command::new("cargo")
.arg("build")
.arg(format!("--{}", profile))
.current_dir("bar")
.status()
.expect("failed to execute cargo");
assert!(status.success(), "failed to build bar");
}
【讨论】: