On Fri, Feb 8, 2013 at 8:16 AM, Andreas Haferburg <[email protected]>wrote:

> What happens is that common is built, then child, then parent, then parent
> is executed.
> What I'd like to happen is that common is built, then child+parent are
> being built concurrently, and as soon as both are done, parent is executed.
>

Unfortunately that's just not how dependencies work. If parent is dependent
on child, then child will build before parent in serial. And since they are
both dependent on common, you essentially have a linear dependency in your
example.

You could break this up by creating a new target that is dependent on child
and parent, and eliminate parent's direct dependency on child. This will
allow child and parent to be built simultaneously. You would then need to
"do something" with this new target so that it will cause "parent" to be
run.

You may be able to improve build times (assuming that is the driver) by
invoking the compiler flag for parallel compilation. Another option may be
to convert the majority of child and parent to another library, with small
simple executable projects that invoke those libraries. This moves the
dependencies around in a way that you *may* get better build performance
... but everything I say is speculative without knowing the nitty gritty of
your project -- build times per project, full dependency graph, etc.
--

Powered by www.kitware.com

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to