[CMake] SuperBuild whoes

David Cole david.cole at kitware.com
Thu Apr 21 08:45:42 EDT 2011


On Thu, Apr 21, 2011 at 4:30 AM, Michael Wild <themiwi at gmail.com> wrote:

> On 04/21/2011 06:48 AM, Michael Wild wrote:
> > Hi all
> >
> > I'm trying to set up a SuperBuild here. Everything works nicely the
> > first time round I build the project. The only real problem I have is
> > that if I change the sources of one of the sub-projects, the SuperBuild
> > still thinks everything is up to date. Of course, this is fully
> > explainable by the fact that the SuperBuild knows nothing about the
> > internal dependencies of the sub-project, and since the stamp files are
> > all there and unchanged, it thinks everything is fine. How do I get
> > around this? Anybody got an idea?
> >
> > Thanks
> >
> > Michael
>
>
> Found it myself. For completeness and documentation purposes: Add a
> custom target which removes the *-complete (see ExternalProject.cmake on
> where it is located, it is a bit tricky) and -*configure stamps. Of
> course, it should always run and depend on the external project target.
>
> The thing I'm struggling with now is installing the various sub-projects
> into the system. Seems like it is impossible to install an imported
> target [1], but guessing and hard coding the paths is also not very
> attractive, but probably the only way to go at the moment. If anybody
> has a better idea, please speak up...
>
> Michael
>
> [1] http://www.mail-archive.com/cmake@cmake.org/msg18336.html
> _______________________________________________
> 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
>


If your intent is *always* to run the configure and later steps of an
ExternalProject build, you can consider adding an extra custom step that
configure depends on, which does nothing, but ALWAYS runs... No need to do
any fancy scrounging of stamp files for this to work.


Something like:

ExternalProject_Add(Proj1
  ...
)

ExternalProject_Add_Step(Proj1 forceconfigure
  COMMAND ${CMAKE_COMMAND} -E echo "This custom external project step forces
the configure and later steps to run whenever a top level build is done..."
  DEPENDEES download
  DEPENDERS configure
  ALWAYS 1
  )


By the way, this is how repository-based checkouts always build. A cvs, git
or svn checkout's update step *always* runs (by default, unless you override
UPDATE_COMMAND), and since the configure step depends on the update step,
they also always configure, build and install.


HTH,
David
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20110421/b315f034/attachment.htm>


More information about the CMake mailing list