47 lines
1.6 KiB
Rust
47 lines
1.6 KiB
Rust
use std::env;
|
||
use std::fs;
|
||
use std::path::PathBuf;
|
||
|
||
fn main() {
|
||
// CARGO_MANIFEST_DIR -> 项目根目录路径
|
||
// CARGO_TARGET_DIR -> 用户自定义了 target 目录,使用该变量
|
||
let manifest_dir = env::var("CARGO_MANIFEST_DIR").unwrap();
|
||
let target_dir = env::var("CARGO_TARGET_DIR")
|
||
.ok()
|
||
.map(PathBuf::from)
|
||
.unwrap_or_else(|| PathBuf::from(&manifest_dir).join("target"));
|
||
|
||
// PROFILE -> 获取当前构建配置文件(debug/release)
|
||
let profile = env::var("PROFILE").unwrap();
|
||
// let output_dir = target_dir.join(&profile);
|
||
|
||
// 在 target/debug/ 或 target/release/ 下创建 bin2 目录
|
||
let output_dir = target_dir.join(&profile).join("bin2");
|
||
|
||
// cargo:rerun-if-changed -> 当指定文件变化时,重新运行 xxx
|
||
println!("cargo:rerun-if-changed=build.rs");
|
||
println!("cargo:rerun-if-changed=mirror.lua");
|
||
println!("cargo:rustc-env=OUTPUT_DIR={}", output_dir.display());
|
||
|
||
// 创建目录
|
||
let subdirs = ["bin", "tools"];
|
||
for subdir in &subdirs {
|
||
let path = output_dir.join(subdir);
|
||
if !path.exists() {
|
||
fs::create_dir_all(&path).expect(&format!("Failed to create {} directory", subdir));
|
||
println!("Created: {:?}", path);
|
||
}
|
||
}
|
||
|
||
// 复制文件
|
||
let source = PathBuf::from(&manifest_dir).join("mirror.lua");
|
||
let destination = output_dir.join("mirror.lua");
|
||
|
||
if source.exists() {
|
||
fs::copy(&source, &destination).expect("Failed to copy mirror.lua");
|
||
println!("Copied mirror.lua to: {:?}", destination);
|
||
} else {
|
||
panic!("mirror.lua not found at: {:?}", source);
|
||
}
|
||
}
|