use std::env; use std::fs; use std::path::PathBuf; fn main() { let out_dir = PathBuf::from(env::var("OUT_DIR").unwrap()); let src_dir = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap()); copy_dir_recursively(&src_dir.join("src/res"), &out_dir.join("src/res")).unwrap(); } fn copy_dir_recursively(src: &PathBuf, dst: &PathBuf) -> std::io::Result<()> { if !dst.exists() { fs::create_dir_all(&dst)?; } for entry in fs::read_dir(src)? { let entry = entry?; let path = entry.path(); let dest_path = dst.join(entry.file_name()); if path.is_dir() { copy_dir_recursively(&path, &dest_path)?; } else { fs::copy(&path, &dest_path)?; println!("cargo:rerun-if-changed={}", path.display()); } } Ok(()) }