[CMake] ExternalProject_Add_StepDependencies parallel download/cloning

David Cole DLRdave at aol.com
Fri Jul 17 13:48:46 EDT 2015


I have adopted the technique of splitting a project into two
ExternalProject_Add calls, the first of which is named
"download-${projectName}" with empty configure, build and install
stages, and the second of which is named ${projectName} with an empty
download step (using DOWNLOAD_COMMAND "").

Then, the "real" project depends on the download-only project, and ALL
download-only projects can occur in parallel (to the limit of the
number of parallel jobs...)

The other benefit of doing it this way is you can have a single
"download-all" external project which depends on all your individual
download-only projects. This comes in handy if you want to download
everything all at once and then go offline with it. Or, if you want to
share the same download step with multiple downstream
configure/build/install commands (for example, ALL configurations for
ALL architectures, each combination of which is a separate EP_Add
call...)


HTH,
David C.



On Fri, Jul 17, 2015 at 12:53 PM, Klaim - Joël Lamotte
<mjklaim at gmail.com> wrote:
> I am setting up a bunch of dependencies using ExternalProject module.
> One of the dependencies, say A, needs another dependency B to be built
> before A can be built.
> ExternalProject_Add_StepDependencies solves the problem fine.
>
> However, I did it this way:
>
> ExternalProject_Add_StepDependencies( A configure B )
>
> Because I wanted A and B repositories to be cloned in parallel, as it should
> be
> safe to do so. Only A's configure step require that B be built and installed
> first.
> As A and B have very big repositories, it might help to have them be
> downloaded
> concurrently.
>
> Is there a way to do this?
>
> Joël Lamotte
>
>
> --
>
> Powered by www.kitware.com
>
> Please keep messages on-topic and check the CMake FAQ at:
> http://www.cmake.org/Wiki/CMake_FAQ
>
> Kitware offers various services to support the CMake community. For more
> information on each offering, please visit:
>
> CMake Support: http://cmake.org/cmake/help/support.html
> CMake Consulting: http://cmake.org/cmake/help/consulting.html
> CMake Training Courses: http://cmake.org/cmake/help/training.html
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/cmake


More information about the CMake mailing list