ProcessorCount

此模块提供一个命令来确定处理器/核心的数量。

在 CMake 中加载此模块,使用

include(ProcessorCount)

命令

此模块提供以下命令

ProcessorCount

确定机器上可用的逻辑 CPU 核心数

ProcessorCount(<variable>)

如果信息可以确定,此命令会将一个名为 <variable> 的变量设置为机器上可用的逻辑 CPU 核心数。如果成功,该变量保证设置为一个正整数(>=1)。如果无法确定处理器数量,则将其设置为 0。

目前,此功能已针对 AIX、Cygwin、FreeBSD、Haiku、HPUX、Linux、macOS、QNX、Sun 和 Windows 实现。

此命令提供当前机器上可用计算核心数的近似值,使其可用于并行构建和测试。它旨在帮助充分利用机器,但用户在使用其全部容量进行并行任务之前,应考虑机器上运行的其他工作负载。

3.15 版中有所更改: 在 Linux 上,返回容器 CPU 数量而非主机 CPU 数量。

注意

此模块依赖于系统相关的命令来确定处理器数量,这在某些环境中可能无法始终提供准确的信息。更普遍准确的逻辑 CPU 计数也可以通过 cmake_host_system_information() 获得

cmake_host_system_information(RESULT n QUERY NUMBER_OF_LOGICAL_CORES)

示例

在以下示例中,此模块用于 ctest -S 仪表板脚本,以确定用于并行 CTest 构建步骤 的核心数

include(ProcessorCount)
ProcessorCount(n)
if(NOT n EQUAL 0)
  set(CTEST_BUILD_FLAGS -j${n})
  set(ctest_test_args ${ctest_test_args} PARALLEL_LEVEL ${n})
endif()