Update Rust authored by Miki, Hiromitsu's avatar Miki, Hiromitsu
...@@ -96,5 +96,53 @@ $3634400 ...@@ -96,5 +96,53 @@ $3634400
### Icon for windows exe ### Icon for windows exe
https://stackoverflow.com/a/76500197 MinGW-w64 (例: MingW-W64-builds) の bin にパスを通しておく必要がある。
[Cargo.toml]
```toml
[package]
...
build = "build.rs"
```
[build.rs]
```rs
use std::{
env,
fs::{copy, write},
path::PathBuf,
process::Command,
};
fn main() {
if env::var("CARGO_CFG_TARGET_OS").unwrap() == "windows" {
let project_dir = PathBuf::from(
env::var("CARGO_MANIFEST_DIR")
.expect("environment variable 'CARGO_MANIFEST_DIR' is not set"),
);
let out_dir_str = env::var("OUT_DIR").expect("environment variable 'OUT_DIR' is not set");
let out_dir = PathBuf::from(&out_dir_str);
copy(
project_dir.join("res").join("icon.ico"),
out_dir.join("icon.ico"),
)
.expect("failed to copy 'res/icon.icon' file to out directory");
write(out_dir.join("icon.rc"), "1 ICON icon.ico")
.expect("failed to write 'icon.rc' file to out directory");
Command::new("windres")
.current_dir(&out_dir)
.arg("icon.rc")
.arg("icon.lib")
.spawn()
.expect("failed to create 'icon.lib' using 'windres'");
println!("cargo:rustc-link-search={}", out_dir_str);
println!("cargo:rustc-link-lib=icon");
}
}
```
参考:\
https://stackoverflow.com/a/76500197