
Users on Microsoft Windows should be able to build boost with everything, both in terms of all supported variants and all boost libraries, with a single command to bjam assuming they have all the optional supporting libraries available. An user download boost, and want to build all the libraries that require building go read the Getting Started Guide <.../getting_started/windows.html#invoke-bjam> and see the after getting bjam they use the command bjam --build-dir=build-directory toolset=toolset-name --build-type=complete stage So they enter that into the command prompt and see lots of warnings and notes about missing optional components. The warnings and notes itself is fine and informative. Actually, it's incomplete as it stand as it doesn't tell the user about Boost.IOStreams optional component requirement of bzip2 & zlib headers. Okay, the user go and install all the optional components the warnings and notes tell them. After installing Python, ICU (building it first), Expat (building it first), and MPI (say MS-MPI), they try again. This time with the command becoming bjam --toolset=... --build-dir=... --build-type=complete -sHAVE_ICU=1 -sICU_PATH="..." -sEXPAT_INCLUDE="..." -sEXPAT_LIBPATH="..." -sBZIP2_SOURCE="..." -sZLIB_SOURCE="..." stage Nope, MPI requires modification of user-config.jam or building it on its own with --with-mpi. Why? No other optional components build that way. So they look to see how they do that, and does it. Second attempt and ... nope. New to 1.39 is the errors error: link=shared together with runtime-link=static is not allowed error: such property combination is either impossible error: or too dangerious to be of any use due to the changes made as a result of <http://lists.boost.org/Archives/boost/2009/04/150675.php>. (Recently noted on <http://groups.google.com/group/boost-list/browse_thread/thread/2a7bd07468b5ffe6>.) While catching those errors is good, maybe it should be fixed as well such that it doesn't come up in the first place if someone do a --build-type=complete with ICU. So now the users have to build Boost.Regex separately from the rest of the library (after finding how to pass the link= & runtime-link= options). By the way, at this point I would like to point out how it's strange that -sHAVE_ICU=1 mean to build with ICU, but so is -sHAVE_ICU=0 .... :S And ... nope, even separately Boost.Regex still wouldn't build without errors. No one told them they need to rename icuin.lib, icuind.lib, icuind.pdb & icudt.lib from ICU to icui18n.lib, icui18nd.lib, icui18nd.pdb & icudata.lib respectively. With Boost.Regex built, we turn to the rest of the library with --without-regex. After waiting a while, we discover ... nope, Most of the library is built but not Boost.Graph. Sorry, this time no one told them they need to change Boost.Graph's Jamfile.v2 file with "<find-shared-library>expat" to "<find-shared-library>libexpatwMT" and adding "<define>XML_STATIC". Boost is great, it's free, it's flexible and I understand it's developed for free by volunteers, but its "installation" for someone that want every libraries could be improved. :-) Regards, KTC -- Only two things are infinite, the Universe and Stupidity. And I'm not quite sure about the former. - Albert Einstein