【问题标题】:Rust build script to copy a file to target directoryRust 构建脚本将文件复制到目标目录
【发布时间】:2020-08-06 20:14:40
【问题描述】:

对于我的项目,我想在项目构建时将项目根目录中的文件 config.ron 复制到目标目录。我知道你可以使用 include_str!在编译时将文件的内容添加到程序中,但我希望文件保留在目标文件夹的根目录中,以便无需重新编译程序即可对其进行编辑。

我目前一直在尝试构建脚本来完成此任务,但我没有运气。

use std::process::Command;
use std::env;

fn main() {
    let profile = std::env::var("PROFILE").unwrap();
    match profile.as_str() {
        "debug" => {
            Command::new("cmd")
                .args(&["copy", "/y"])
                .arg(&format!(r#"{}\config.ron"#, env::var("CARGO_MANIFEST_DIR").unwrap()))
                .arg(&format!(r#"{}\target\debug"#, env::var("CARGO_MANIFEST_DIR").unwrap()))
                .status()
                .expect("Copy failed to execute.");
            ()
        },
        "release" => {
            Command::new("cmd")
                .args(&["copy", "/y"])
                .arg(&format!(r#"{}\config.ron"#, env::var("CARGO_MANIFEST_DIR").unwrap()))
                .arg(&format!(r#"{}\target\release"#, env::var("CARGO_MANIFEST_DIR").unwrap()))
                .status()
                .expect("Copy failed to execute.");
            ()
        },
        _ => (),
    }
}

使用构建脚本将此文件复制到目标目录的正确方法是什么?

【问题讨论】:

  • 最简单的方法是不编写任何代码,只需使用 Linux bash 或 Windows bat 脚本即可
  • 这就是我认为可能发生的事情。我只是认为做一个构建脚本会更干净。
  • 这只是 2-3 行 BAT 脚本,而整个 Rust 项目需要一个单独的 Cargo.toml 以及所有对于如此简单的任务来说不必要的东西

标签: rust rust-cargo


【解决方案1】:

如果您真的想在构建脚本中执行此操作,我会使用这些成分:

【讨论】:

  • 在运行构建脚本时似乎没有设置CARGO_TARGET_DIR。 Cargo 从 its 环境中读取该变量,但似乎没有在它运行的构建脚本上设置它。
猜你喜欢
  • 1970-01-01
  • 2021-08-05
  • 1970-01-01
  • 2016-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多