ProcessorCount

ProcessorCount(var)

決定處理器/核心數量,並將值儲存在 ${var}

如果可以確定機器上的實體核心數量,則將名為 ${var} 的變數設定為該數量。 否則,它將設定為 0。目前,此功能已針對 AIX、cygwin、FreeBSD、HPUX、Linux、macOS、QNX、Sun 和 Windows 實作。

在 3.15 版本中變更:在 Linux 上,傳回容器 CPU 數量,而不是主機 CPU 數量。

如果此函數成功,保證傳回正整數 (>=1)。 如果在確定處理器數量時發生問題,則傳回 0。

更準確的實體 CPU 數量可以透過 cmake_host_system_information() 取得

cmake_host_system_information(RESULT N
                              QUERY NUMBER_OF_PHYSICAL_CORES)

在 ctest -S 儀表板腳本中的範例用法

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()

此函數旨在提供目前機器上可用計算核心數量的近似值,以便您可以將該值用於平行建置和平行測試。 它旨在協助盡可能利用機器的資源。 當然,在決定是否要求機器將所有容量都留給自己時,應考慮機器上可能同時運行的其他程式。