Justin Arruda
Justin Arruda

Reputation: 41

How to do Parallel CMake ExternalProject Builds

When building a CMake project (e.g. on Windows), I can perform a parallel build by executing the following command:

cmake --build . -- /m

The /m switch is passed to msbuild and I get parallelized builds. However, if I have some external project in my CMakeLists, that switch is not passed through to its build command.

What's the best way to ensure my ExternalProject is built in parallel? I don't want to hardcode a BUILD_COMMAND if I can avoid it.

Upvotes: 3

Views: 1067

Answers (2)

johnb003
johnb003

Reputation: 1909

In CMake 3.12, support was added to kick off parallel jobs from within cmake.

The previous versions only supported this via passthrough arguments after the --, which understandably wouldn't pass through to external builds. Though, I'm not sure if the new support works for ExternalProject, it'd be great to try and report back if it works!

Upvotes: 1

Finn
Finn

Reputation: 1056

I had the same problem with make based external_projects. I ended up with the solution to pass the -j8 flag via a cmake cached variable.

set(EXTERNAL_BUILD_ARGS "/m" CACHE STRING "flags for external project builds")

Upvotes: 0

Related Questions