[CMake] Dependency for launching an application

Patrick Johnmeyer pjohnmeyer+cmake at gmail.com
Fri Feb 8 09:41:18 EST 2013


On Fri, Feb 8, 2013 at 8:16 AM, Andreas Haferburg <ahaferburg at scopis.com>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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20130208/5e4a0de7/attachment.htm>


More information about the CMake mailing list