- 依赖替换为 windows-sys 0.61,main.rs 全面适配新 API - 配置解析错误显式传播:env/args 类型错误、数组空洞、非法键不再静默 吞错 - 修正空环境变量与空参数语义,补充 UTF-8 与路径拼接校验 - require 容错移至 Rust 侧,模块加载失败记录日志并跳过 - 新增配置解析与运行时单元测试(19 个)
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=shims.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("shims.lua");
|
||
let destination = output_dir.join("shims.lua");
|
||
|
||
if source.exists() {
|
||
fs::copy(&source, &destination).expect("Failed to copy shims.lua");
|
||
println!("Copied shims.lua to: {:?}", destination);
|
||
} else {
|
||
panic!("shims.lua not found at: {:?}", source);
|
||
}
|
||
}
|