Rust 构建脚本将文件复制到目标目录

Ray*_*fer 6 rust rust-cargo

对于我的项目,我想在项目构建时将项目根目录中的文件 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.");
            ()
        },
        _ => (),
    }
}
Run Code Online (Sandbox Code Playgroud)

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

phi*_*mue 3

如果您确实想在构建脚本中执行此操作,我会使用以下成分:

  • 运行构建脚本时似乎没有设置“CARGO_TARGET_DIR”。Cargo 从 _its_ 环境中读取该变量,但似乎没有在它运行的构建脚本上设置它。 (7认同)