Есть такой build.rs
fn main() {
#[cfg(all(target_arch = "x86_64", target_vendor = "unknown", target_os = "none"))]
{
println!("cargo:warning={}", "x86_64-unknown-none");
}
#[cfg(not(all(target_arch = "x86_64", target_vendor = "unknown", target_os = "none")))]
{
println!("cargo:warning={}", "NOT x86_64-unknown-none");
}
println!("cargo:warning=Target arch: {:?}", std::env::var("CARGO_CFG_TARGET_ARCH"));
println!("cargo:warning=Target vendor: {:?}", std::env::var("CARGO_CFG_TARGET_VENDOR"));
println!("cargo:warning=Target os: {:?}", std::env::var("CARGO_CFG_TARGET_OS"));
#[cfg(target_arch = "x86_64")]
println!("arch true");
#[cfg(target_vendor = "unknown")]
println!("vendor true");
#[cfg(target_os = "none")]
println!("os true");
}
Проблема в том, что при использовании команды
cargo b --target x86_64-unknown-none
я всё равно получаю
warning: test_x86_64_unknown_none_only@0.1.0: NOT x86_64-unknown-none
warning: test_x86_64_unknown_none_only@0.1.0: Target arch: Ok("x86_64")
warning: test_x86_64_unknown_none_only@0.1.0: Target vendor: Ok("unknown")
warning: test_x86_64_unknown_none_only@0.1.0: Target os: Ok("none")
Условия не срабатывают даже по одному.
Кажется что #[cfg] не работает вовсе, но если бы оно не работало, то первое сообщение тоже бы выводилось, но нет