[CMake] Dependency for launching an application

Andreas Haferburg ahaferburg at scopis.com
Fri Feb 8 10:24:21 EST 2013


Yes, that's pretty much the setup we have: The common (static) library contains almost all obj's, 
and the two exe projects only have a small main.obj and link against the library. I'd like to 
eliminate the build(=link) time of child.exe by having the linker link both exes at the same time.

Regards,
Andreas


On 08.02.2013 15:41, Patrick Johnmeyer wrote:
> On Fri, Feb 8, 2013 at 8:16 AM, Andreas Haferburg <ahaferburg at scopis.com
> <mailto: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.


More information about the CMake mailing list