Boost logo

Boost :

Subject: Re: [boost] "I want everything" should build "out of the box" (on Windows)
From: Kenny Riddile (kfriddile_at_[hidden])
Date: 2009-07-28 12:26:23


KTC wrote:
> 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
>

I'm just looking forward to the day when the current CMake support
exposes all of this optional functionality (variants, zlib, bzip2, etc.)
as CMake variables that I can happily configure via the CMake gui, push
a button, and build exactly what I want. For some reason, CMake seems
much more intuitive to me, both in syntax and structure, than using bjam.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk