HMMM ICON

This commit is contained in:
jess 2026-04-17 22:53:49 -07:00
parent eec110e81a
commit 5e774c432e
2 changed files with 9 additions and 10 deletions

View File

@ -22,4 +22,4 @@ serde_json = "1"
dirs = "6" dirs = "6"
[target.'cfg(windows)'.build-dependencies] [target.'cfg(windows)'.build-dependencies]
winres = "0.1" embed-resource = "3"

View File

@ -5,10 +5,12 @@ fn main() {
let svg = "../assets/Acord.svg"; let svg = "../assets/Acord.svg";
let ico = "icon.ico"; let ico = "icon.ico";
let rc = "icon.rc";
let tmp = "icon_tmp"; let tmp = "icon_tmp";
println!("cargo:rerun-if-changed={svg}"); println!("cargo:rerun-if-changed={svg}");
// Generate icon.ico from SVG via rsvg-convert + magick.
let _ = std::fs::create_dir_all(tmp); let _ = std::fs::create_dir_all(tmp);
let sizes = [16, 24, 32, 48, 64, 128, 256]; let sizes = [16, 24, 32, 48, 64, 128, 256];
let mut pngs = Vec::new(); let mut pngs = Vec::new();
@ -22,7 +24,7 @@ fn main() {
.map(|s| s.success()) .map(|s| s.success())
.unwrap_or(false); .unwrap_or(false);
if !ok { if !ok {
eprintln!("cargo:warning=rsvg-convert not found or failed — building without icon"); println!("cargo:warning=rsvg-convert not found or failed — building without icon");
let _ = std::fs::remove_dir_all(tmp); let _ = std::fs::remove_dir_all(tmp);
return; return;
} }
@ -39,16 +41,13 @@ fn main() {
let _ = std::fs::remove_dir_all(tmp); let _ = std::fs::remove_dir_all(tmp);
if !ok { if !ok {
eprintln!("cargo:warning=magick (ImageMagick) not found — building without icon"); println!("cargo:warning=magick (ImageMagick) not found — building without icon");
return; return;
} }
println!("cargo:warning=icon.ico generated, embedding via winres..."); // Write a .rc file and embed via embed-resource (supports LLVM/GNU toolchains).
let mut res = winres::WindowsResource::new(); std::fs::write(rc, "1 ICON \"icon.ico\"\n").ok();
res.set_icon(ico); embed_resource::compile(rc, embed_resource::NONE);
match res.compile() { println!("cargo:warning=icon embedded successfully");
Ok(_) => println!("cargo:warning=icon embedded successfully"),
Err(e) => eprintln!("cargo:warning=winres failed: {e} — building without icon"),
}
} }
} }