有没有办法检测 build.rs 中 Windows 的版本?

Is there a way to detect the version of Windows in a build.rs?

正如标题所说。我正在我的 build.rs 中构建一些 C 文件,我需要根据 Windows 的版本有条件地设置一些定义/有条件地 link 库。有没有办法检测到?

当然可以。 例如 nt_version crate,您可以使用它在编译时 检测 windows 版本 。请注意,您可能 "cross compile" 用于不同的 windows 版本(例如,在 Windows 7 上开发 Windows 10 或类似版本)。

这里有一个关于如何使用它的小片段:

use nt_version;

fn main() {
    let version: &str;
    match nt_version::get() {
        (6, 0, _) => version = "Windows Vista",
        (6, 1, _) => version = "Windows 7",
        (10, _, _) => version = "Windows 10",
        _ => version = "Unsupported!",
    }

    println!("cargo:warning={}", version);
}