fix: improve default target triple generation for various OS environments

This commit is contained in:
2026-06-07 21:29:55 +08:00
parent de88c160ad
commit 8e0c535cfd

View File

@@ -73,23 +73,30 @@ pub fn normalize_target_os(target: &str) -> &str {
} }
pub fn default_target_triple() -> String { pub fn default_target_triple() -> String {
let arch = std::env::consts::ARCH;
if cfg!(target_os = "linux") { if cfg!(target_os = "linux") {
format!("{}-unknown-linux-gnu", std::env::consts::ARCH) let env = if cfg!(target_env = "musl") {
"musl"
} else {
"gnu"
};
format!("{arch}-unknown-linux-{env}")
} else if cfg!(target_os = "macos") { } else if cfg!(target_os = "macos") {
format!("{}-apple-darwin", std::env::consts::ARCH) format!("{arch}-apple-darwin")
} else if cfg!(target_os = "windows") { } else if cfg!(target_os = "windows") {
format!("{}-pc-windows-msvc", std::env::consts::ARCH) let env = if cfg!(target_env = "gnu") {
"gnu"
} else {
"msvc"
};
format!("{arch}-pc-windows-{env}")
} else if cfg!(any( } else if cfg!(any(
target_os = "freebsd", target_os = "freebsd",
target_os = "openbsd", target_os = "openbsd",
target_os = "netbsd", target_os = "netbsd",
target_os = "dragonfly" target_os = "dragonfly"
)) { )) {
format!( format!("{arch}-unknown-{}", std::env::consts::OS)
"{}-unknown-{}",
std::env::consts::ARCH,
std::env::consts::OS
)
} else { } else {
"unknown".to_string() "unknown".to_string()
} }