【问题标题】:How to compile rust packages with different targets如何编译具有不同目标的 rust 包
【发布时间】: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


    【解决方案1】:

    您可以在configuration 文件中指定默认目标(在命令行上没有明确的--target 选项时将使用该目标)。因此,我建议您创建以下文件:

    1. /foo/.cargo/config.toml

      [build]
      target = "wasm32-unknown-unknown"
      
    2. /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");
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-11
      相关资源
      最近更新 更多