# parralelise ExternalProject

**URL:** https://discourse.cmake.org/t/parralelise-externalproject/2321
**Category:** Code
**Created:** [December 9, 2020, 11:00am UTC](https://discourse.cmake.org/t/parralelise-externalproject/2321 "2020-12-09T11:00:59Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![grimgort](https://discourse.cmake.org/user_avatar/discourse.cmake.org/grimgort/32/1002_2.png) [@grimgort](https://discourse.cmake.org/u/grimgort)
#### Post date: [December 9, 2020, 11:00am UTC](https://discourse.cmake.org/t/parralelise-externalproject/2321/1 "2020-12-09T11:00:59Z")

</div>

Hello,  
I would like to parallel compile with ExternalProject\_add. I use MSVC to compile (VSCODE)

the -J N option doesn’t compile in parallel inside externalProject.I tried to switch -jN to the CMAKE\_ARGS option, but it doesn’t seem to work either.

EX1 :  
cmake --build build -J8

EX2:  
set(lib\_name zlib)  
set(lib\_name\_install ${CMAKE\_CURRENT\_SOURCE\_DIR}/install/${BUILDNAME}/${lib\_name})  
if(BUILD\_WITH\_ZLIB)  
set(git\_repo [https://github.com/madler/zlib](https://github.com/madler/zlib))  
set(git\_tag v1.2.11)  
message("[INFO] beginning compilation ${lib\_name}")  
externalproject\_add(  
${lib\_name}  
GIT\_REPOSITORY ${git\_repo}  
GIT\_TAG ${git\_tag}  
GIT\_CONFIG http.proxy=${MY\_PROXY} advice.detachedHead=false  
SOURCE\_DIR ${CMAKE\_CURRENT\_SOURCE\_DIR}/${lib\_name}  
INSTALL\_DIR ${lib\_name\_install}  
CMAKE\_ARGS -DCMAKE\_INSTALL\_PREFIX=${lib\_name\_install}  
-j8  
# PATCH\_COMMAND “remove zconfig.h”  
)

---

<div class="post-metadata">

### Author: ![ben.boeckel](https://discourse.cmake.org/letter_avatar_proxy/v4/letter/b/ea5d25/32.png) [@ben.boeckel](https://discourse.cmake.org/u/ben.boeckel)
#### Post date: [December 9, 2020, 5:56pm UTC](https://discourse.cmake.org/t/parralelise-externalproject/2321/2 "2020-12-09T17:56:54Z")

</div>

`CMAKE_ARGS` is passed to the configure step, so `-j8` isn’t very useful there. I think you might have to replace `BUILD_COMMAND`. Note that for Makefiles, `$(MAKE)` is used to pass along job server information and Ninja is parallel by default. I think replacing `BUILD_COMMAND` is all that’s available today in `master` for the IDE generators.

---

<div class="post-metadata">

### Author: ![grimgort](https://discourse.cmake.org/user_avatar/discourse.cmake.org/grimgort/32/1002_2.png) [@grimgort](https://discourse.cmake.org/u/grimgort)
#### Post date: [December 10, 2020, 2:45pm UTC](https://discourse.cmake.org/t/parralelise-externalproject/2321/3 "2020-12-10T14:45:10Z")

</div>

> [@ben.boeckel](#):
>
> `BUILD_COMMAND`

is it possible to have the default build\_command like that : BUILD\_COMMAND ${BUILD\_COMMAND} -j9

externalproject\_add(  
${lib\_name}  
GIT\_REPOSITORY ${git\_repo}  
GIT\_TAG ${git\_tag}  
GIT\_CONFIG http.proxy=${MY\_PROXY} advice.detachedHead=false  
SOURCE\_DIR ${CMAKE\_CURRENT\_SOURCE\_DIR}/${lib\_name}  
INSTALL\_DIR ${lib\_name\_install}  
BUILD\_COMMAND ${BUILD\_COMMAND} -j9  
CMAKE\_ARGS -DCMAKE\_INSTALL\_PREFIX=${lib\_name\_install}\_$\<$CONFIG:Debug:Debug\>  
-DBUILD\_TESTING=OFF  
# PATCH\_COMMAND “remove zconfig.h”  
)

---

<div class="post-metadata">

### Author: ![ben.boeckel](https://discourse.cmake.org/letter_avatar_proxy/v4/letter/b/ea5d25/32.png) [@ben.boeckel](https://discourse.cmake.org/u/ben.boeckel)
#### Post date: [December 10, 2020, 6:41pm UTC](https://discourse.cmake.org/t/parralelise-externalproject/2321/4 "2020-12-10T18:41:51Z")

</div>

Not really, no. I think you can ask what the build command is once you make it, but I think that’s it without more hoops. Making [a feature request](https://gitlab.kitware.com/cmake/cmake/issues) for something like a `BUILD_ARGS` would be useful for tracking such an addition though.

---

<div class="post-metadata">

### Author: ![brad.king](https://discourse.cmake.org/user_avatar/discourse.cmake.org/brad.king/32/11_2.png) [@brad.king](https://discourse.cmake.org/u/brad.king)
#### Post date: [December 15, 2020, 2:58pm UTC](https://discourse.cmake.org/t/parralelise-externalproject/2321/5 "2020-12-15T14:58:29Z")

</div>

I see [CMake Issue 21599](https://gitlab.kitware.com/cmake/cmake/-/issues/21599) for this.
