如何检测我的 Cmake 代码在 运行 上的 macOS 版本?

How can I detect what version of macOS my Cmake code is running on?

我需要确定 cmake 文件 运行 的 MacOS 版本。

if(BIGSUR)
     # do something
else()
    #  do something else
endif()

根据您的操作,CMAKE_HOST_SYSTEM_VERSION 可能不正确。您可能需要 CMAKE_SYSTEM_VERSION 来给出您正在编译的目标系统的版本。你问题中的措辞(“cmake 文件是 运行”)表明你确实想要 HOST 版本,但我提到这两个版本是为了完整性。

现在,您可能想要的是:

if (CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin" 
    AND CMAKE_HOST_SYSTEM_VERSION VERSION_GREATER_EQUAL 20
    AND CMAKE_HOST_SYSTEM_VERSION VERSION_LESS 21)
    message(STATUS "Running on Big Sur")
endif ()

请注意,Big Sur 是最新版本的 macOS 并运行 Darwin 内核版本 20.x。自 2002 年 Jaguar 以来,macOS 的每个版本都将 Darwin 主要版本增加了 1(Puma 从 v1.4.1 跃升至 5.1),因此可以安全地假设没有 Big Sur 版本的 Darwin 版本 > 20.