My initial explanation was bad.

Both parent and child depend on a common library. If something in this lib changes, I need both of them to get rebuilt before executing parent.exe, since it will run child.exe.

Sorry for the confusion.

Andreas


On 08.02.2013 19:04, Nick Overdijk wrote:
> I'm probably missing something, but why
>
>> add_dependencies(parent child)
>
> ? That doesn't make sense. Parent is not using anything from child. You can just leave that line away and everything will be fine right?
>
> On 2013-08-02, at 16:24:21 , Andreas Haferburg wrote:
>
>> 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 <[email protected]
>>> <mailto:[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
>
--

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