【发布时间】: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