How many ya got?

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!

6 Responses to How many ya got?

  1. Pingback: David Cole

  2. Pingback: Marcus Hanwell

  3. Pingback: Ed Hein

  4. Pingback: Dave Chen

  5. Pingback: Lars Bilke

  6. Pingback: David Cole

Questions or comments are always welcome!

X