CMake,作为一套强大且广泛应用的跨平台构建工具,它提供了一种标准化的方式来描述项目的构建过程,并能够在多种操作系统(如 Windows、Linux、macOS 等)上生成原生的构建系统(如 Visual Studio 项目文件、Makefile、Ninja 文件等)。CMake 的核心能力之一,便是能够感知并识别其运行或目标构建所处的环境。
Make 提供了一个内置变量 CMAKE_SYSTEM_NAME,用于存储 CMake 当前配置或构建所针对的操作系统名称。这个变量的值通常由 CMake 在配置过程开始时自动确定,它反映了构建环境的操作系统类型。在大多数情况下,如果不是进行交叉编译,CMAKE_SYSTEM_NAME 的值会与 CMAKE_HOST_SYSTEM_NAME(CMake 运行所在的宿主操作系统名称)相同。但是,在进行交叉编译时,可以通过设置 CMAKE_SYSTEM_NAME 来明确指定目标操作系统。常见的 CMAKE_SYSTEM_NAME 值包括 "Linux"、"Darwin" (macOS)、"Windows"、"AIX" 等。CMake 会根据底层系统的 uname -s 命令输出(在支持的系统上)或通过其他机制来确定这个值。