At the end of this script snippet, the CMake variable PROCESSOR_COUNT has a value appropriate for passing to make’s -j for parallel builds.
When used in a ctest -S script, you can call…
if(PROCESSOR_COUNT)
set(CTEST_BUILD_FLAGS “-j${PROCESSOR_COUNT}”)
endif()
…to enable parallel builds with “Unix Makefiles” and the ctest_build command.
Here’s the snippet:
if(NOT DEFINED PROCESSOR_COUNT)
# Unknown:
set(PROCESSOR_COUNT 0)
# Linux:
set(cpuinfo_file “/proc/cpuinfo”)
if(EXISTS “${cpuinfo_file}”)
file(STRINGS “${cpuinfo_file}” procs REGEX “^processor.: [0-9]+$”)
list(LENGTH procs PROCESSOR_COUNT)
endif()
# Mac:
if(APPLE)
find_program(cmd_sys_pro “system_profiler”)
if(cmd_sys_pro)
execute_process(COMMAND ${cmd_sys_pro} OUTPUT_VARIABLE info)
string(REGEX REPLACE “^.*Total Number Of Cores: ([0-9]+).*$” “\\1”
PROCESSOR_COUNT “${info}”)
endif()
endif()
# Windows:
if(WIN32)
set(PROCESSOR_COUNT “$ENV{NUMBER_OF_PROCESSORS}”)
endif()
endif()
Cheers!
Pingback: David Cole
Pingback: Marcus Hanwell
Pingback: Ed Hein
Pingback: Dave Chen
Pingback: Lars Bilke
Pingback: David Cole