Now that we've started modularizing everything in Boost, we have a
heck of a lot more BUILD_BOOST_* options in the CMake configuration,
as well as the ton of TEST_BOOST_* macros we had before. I see a few
problems with this approach:

  1) The sheer volume of these options hides other, more important options.
  2) It's hard to use these options. If I just want to build 5
libraries, I have to turn off all the others
  3) We don't give good feedback if one turns of a library that
another library depends on

Instead, I suggest that we have advanced cache variables
BOOST_INCLUDE_ONLY and BOOST_EXCLUDE_ONLY. Users can set only one of
these, and they have the following behavior:

  If one sets BOOST_INCLUDE_ONLY, CMake will compute the transitive
closure and update BOOST_INCLUDE_ONLY, notifying the user of the extra
libraries it added. Once this has settled, we'll just build these
libraries.

  If one sets BOOST_EXCLUDE_ONLY, create a list of all Boost libraries
that (1) aren't in BOOST_EXCLUDE_ONLY and (2) don't depend on
something in BOOST_EXCLUDE_ONLY.

As for testing, we should have test targets for all of the libraries
that are included, when testing is enabled.

I believe that this approach better fits the use cases for this
functionality ("I hate signals, turn it off!"; "I just want MPI; give
me that and whatever it needs") and will make Boost-CMake easier to
use.

  - Doug
_______________________________________________
Boost-cmake mailing list
Boost-cmake@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-cmake

Reply via email to