45 lines
1.1 KiB
Rust
45 lines
1.1 KiB
Rust
use std::path::PathBuf;
|
|
use std::process::Command;
|
|
|
|
fn main() {
|
|
let ico_path = PathBuf::from("location.ico");
|
|
|
|
if !ico_path.exists() {
|
|
println!(
|
|
"cargo:warning=location.ico 不存在,将不嵌入图标。请将图标文件放入项目根目录。"
|
|
);
|
|
return;
|
|
}
|
|
|
|
println!("cargo:rerun-if-changed=location.ico");
|
|
println!("cargo:rerun-if-changed=icon.rc");
|
|
|
|
let out_dir = PathBuf::from(std::env::var("OUT_DIR").unwrap());
|
|
let res_output = out_dir.join("icon.res");
|
|
|
|
let windres_path = find_windres();
|
|
let status = Command::new(&windres_path)
|
|
.args([
|
|
"icon.rc",
|
|
"-O", "coff",
|
|
"-o",
|
|
])
|
|
.arg(&res_output)
|
|
.status()
|
|
.expect("执行 windres 失败");
|
|
|
|
if !status.success() {
|
|
panic!("windres 编译资源文件失败");
|
|
}
|
|
|
|
println!("cargo:rustc-link-arg={}", res_output.display());
|
|
}
|
|
|
|
fn find_windres() -> PathBuf {
|
|
let mingw_windres = PathBuf::from("C:\\msys64\\mingw64\\bin\\windres.exe");
|
|
if mingw_windres.exists() {
|
|
return mingw_windres;
|
|
}
|
|
|
|
PathBuf::from("windres")
|
|
} |