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
> <>. (Recently
> noted on
> <>.)
> 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,

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, gregod at, cpdaniel at, john at