20260619
This commit is contained in:
30
build.rs
Normal file
30
build.rs
Normal file
@@ -0,0 +1,30 @@
|
||||
fn main() {
|
||||
// Bundle the gettext `.po` translations under `lang/` so the UI's `@tr(...)`
|
||||
// strings can switch language at runtime via slint::select_bundled_translation.
|
||||
// Source language is Chinese (the msgids); `lang/<lc>/LC_MESSAGES/meatshell.po`
|
||||
// provides other locales. No per-component context, so msgids are the raw
|
||||
// Chinese strings.
|
||||
println!("cargo:rerun-if-changed=lang");
|
||||
slint_build::compile_with_config(
|
||||
"ui/app.slint",
|
||||
slint_build::CompilerConfiguration::new()
|
||||
.with_style("fluent".into())
|
||||
.with_bundled_translations("lang")
|
||||
.with_default_translation_context(slint_build::DefaultTranslationContext::None),
|
||||
)
|
||||
.expect("Slint build failed");
|
||||
|
||||
// Embed the application icon into the Windows executable so it shows up in
|
||||
// Explorer, the taskbar and shortcuts. Build scripts run on the host, so a
|
||||
// Linux -> Windows cross build must check the target OS via Cargo env vars
|
||||
// instead of `#[cfg(windows)]`.
|
||||
println!("cargo:rerun-if-env-changed=CARGO_CFG_TARGET_OS");
|
||||
if std::env::var("CARGO_CFG_TARGET_OS").as_deref() == Ok("windows") {
|
||||
println!("cargo:rerun-if-changed=assets/meatshell.ico");
|
||||
let mut res = winresource::WindowsResource::new();
|
||||
res.set_icon("assets/meatshell.ico");
|
||||
if let Err(e) = res.compile() {
|
||||
println!("cargo:warning=failed to embed Windows icon: {e}");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user