[CMake] Building in stages.

Aeschbacher, Fabrice Fabrice.Aeschbacher at siemens.com
Mon Jun 21 12:46:06 EDT 2010


I would try following in foo/CmakeLists.txt:

   add_custom_command(TARGET foo
      POST_BUILD
      COMMAND touch bar/CMakeLists.txt
   )

This will force CMake to re-build the makefiles for 'bar' (because its CMakeLists.txt has been modified)

And of course, add_dependencies(bar foo)

Hope it helps,
Fabrice Aeschbacher

> -----Ursprüngliche Nachricht-----
> Von: cmake-bounces at cmake.org [mailto:cmake-bounces at cmake.org] 
> Im Auftrag von Magnus Therning
> Gesendet: Montag, 21. Juni 2010 17:41
> An: Michael Wild
> Cc: Cmake Mailing List
> Betreff: Re: [CMake] Building in stages.
> 
> On Mon, Jun 21, 2010 at 16:10, Michael Wild <themiwi at gmail.com> wrote:
> >
> >> I'm looking for some suggestions on how to tackle a 
> problem with staged
> >> builds.
> >>
> >> In trying to convert a project which uses omake to build 
> OCaml files I've
> >> stumbled on the issue that building one sub-part (bar) of 
> the project needs
> >> the result of another sub-part (foo).  The twist is that 
> foo is required
> >> already at the dependency-discovery stage of bar[1].  Is 
> there some clever way
> >> of working around this?
> >>
> >> One obvious solution would be to simply skip automatic 
> generation of
> >> dependencies for bar, but that feels a little naughty.  It 
> feels about as
> >> naughty as how the previous build system just worked by 
> ordering[2].
> >>
> >> Hopefully there's some better way of achieving this, any 
> suggestions?
> >>
> >> /M
> >>
> >> [1] For those initiated in OCaml and its tools stack the 
> former sub-part
> >> builds a custom filter for camlp4 which is then used in 
> the latter sub-part.
> >> [2] omake is very similar to make and in this case the 
> build of foo just
> >> happened before bar, and there was no attempt at automatic 
> generation of
> >> dependencies at all.
> >
> > Well, if you need foo to be built before bar, just use 
> add_dependencies(bar foo). File-level dependency scanning 
> happens just before bar is built, so if I understand your 
> question correctly, you should be fine now...
> 
> No, I need foo to be built before bar is inspected to gather its
> dependencies.  And dependencies for both foo and bar are gathered when
> calling `cmake` to generate the Makefiles.  This is how my OCaml
> support works at the moment.  If you have suggestions for how to move
> the dependency generation to compile time (i.e. when calling `make`)
> then I'd be very glad to hear it.  Or even better, be pointed to an
> example of how to achieve that.
> 
> /M
> 
> -- 
> Magnus Therning                        (OpenPGP: 0xAB4DFBA4)
> magnus@therning.org          Jabber: magnus@therning.org
> http://therning.org/magnus         identi.ca|twitter: magthe
> _______________________________________________
> 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


More information about the CMake mailing list