On Tue, Dec 22, 2009 at 9:37 AM, Troy D. Straszheim <t...@resophonic.com>wrote:

> David Cole <david.c...@kitware.com> writes:
>
> > On Tue, Dec 22, 2009 at 7:58 AM, David Wolfe <dwo...@fifthsally.com>
> wrote:
> >
> >     On 12/22/2009 7:11 AM, David Wolfe wrote:
> >
> >                                                    Most of our external
> >         dependencies aren't even built using CMake, so 'CMake-ifying'
> >         everything
> >         under one big über-build hardly seems worth it...
> >
> >
> >     On 12/22/2009 6:50 AM, David Cole wrote:
> >
> >         One way to overcome these things, but still build projects from
> source
> >         code as needed is to use a new feature in CMake 2.8: the
> >         ExternalProject
> >         module...
> >
> >
> >     Wow. That could be *really* useful---especially the fact that it
> allows
> >     you to download sources from the web, CVS, svn, etc.  It might be
> enough
> >     to change my mind about maintaining a separate externals archive. :-)
> >
> >
> >
> > If it's not enough to change your mind...... let me know what you think
> it's
> > missing.
> >
>
> Here's a use-case: boost-cmake exports buildspace targets to
> $CMAKE_BINARY_DIR/lib/Exports.cmake.  So you'd want to download,
> extract, run cmake on the unpacked archive, and only then include() the
> exported targets...  Does ExternalProject work this way?
>

It does work that way if you set it up that way.

So you would have one ExternalProject_Add call to build and install
boost-cmake... and then a subsequent ExternalProject_Add call to build
something that depends on it. In this dependent project you would use
"DEPENDS boost-cmake-proj" to express this dependency. And pass whatever -D
or prefix information you need to the configure step of this dependent
project so that it knows where the boost-cmake build is.

An external project must configure, build and install all the way before any
of the projects that depend on it even run their first build step.

It's pretty flexible and customizable. If there's a build step that does not
do what you want it to by default, you can replace it with your own custom
step. And you can inject custom steps into the stream of steps that occur by
default, too.

HTH,
David
_______________________________________________
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