fn main() { println!("cargo:rerun-if-changed=build.rs"); #[cfg(windows)] { use std::io::Write; use std::path::Path; let repo_dir = std::env::current_dir() .ok() .and_then(|cwd| cwd.parent().map(|p| p.to_path_buf())) .unwrap(); let windows_dir = repo_dir.join("assets").join("windows"); let rcfile_name = Path::new(&std::env::var_os("OUT_DIR").unwrap()).join("resource.rc"); let mut rcfile = std::fs::File::create(&rcfile_name).unwrap(); write!( rcfile, r#" #include 1 RT_MANIFEST "{win}\\console.manifest" "#, win = windows_dir.display().to_string().replace("\\", "\\\\"), ) .unwrap(); drop(rcfile); // Obtain MSVC environment so that the rc compiler can find the right headers. // https://github.com/nabijaczleweli/rust-embed-resource/issues/11#issuecomment-603655972 let target = std::env::var("TARGET").unwrap(); if let Some(tool) = cc::windows_registry::find_tool(target.as_str(), "cl.exe") { for (key, value) in tool.env() { std::env::set_var(key, value); } } embed_resource::compile(rcfile_name); } }