如何检测我的 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.
我需要确定 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.