On Fri, Feb 8, 2013 at 8:16 AM, Andreas Haferburg <span dir="ltr">&lt;<a href="mailto:ahaferburg@scopis.com" target="_blank">ahaferburg@scopis.com</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
What happens is that common is built, then child, then parent, then parent is executed.<br>
What I&#39;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.<br></blockquote><div><br></div><div>Unfortunately that&#39;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.</div>
<div><br></div><div>You could break this up by creating a new target that is dependent on child and parent, and eliminate parent&#39;s direct dependency on child. This will allow child and parent to be built simultaneously. You would then need to &quot;do something&quot; with this new target so that it will cause &quot;parent&quot; to be run.</div>
<div><br></div><div>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.</div>
</div>