1

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

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

4

1 回答 1

0

取决于你在做什么,CMAKE_HOST_SYSTEM_VERSION可能不正确。相反,您可能想要CMAKE_SYSTEM_VERSIONwhich 给出您正在编译的目标系统的版本。您问题中的措辞(“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(Puma 从 v1.4.1 跃升到 5.1)以来,macOS 的每个版本都将 Darwin 主要版本增加了 1,因此可以安全地假设 Big Sur 的任何版本都不会具有大于 20 的 Darwin 版本。

于 2021-02-12T23:26:03.893 回答