Boost logo

Boost-Build :

From: Edward Diener (eldiener_at_[hidden])
Date: 2020-03-11 09:00:46

I will use gcc as an example, since it allows for possible toolset
requirements, but any toolset with requirements works the same way. In
my user-config.jam, let us say for simplification purposes, I have:

using gcc : 9.2 : command_invoking_9.2 ;
using gcc : 9.1 : command_invoking_9.1 ;

I can do:

b2 toolset=gcc-9.2 address-model=32

without problems. Now let us supposed I add address model requirements
to my user-config.jam, as in:

using gcc : 9.2 : command_invoking_9.2 : : <address-model>32 ;
using gcc : 9.1 : command_invoking_9.1 : : <address-model>32 ;

and now I run the same command line:

b2 toolset=gcc-9.2 address-model=32

only to now get:

Performing configuration checks

     - default address-model : none
     - default architecture : none
in expand-composites from module feature
error: explicitly-specified values of non-free feature
<toolset-gcc:version> conflict
error: existing values: 9.1 9.2
error: value from expanding <toolset-gcc:version>9.2 : 9.2
in feature.expand from module feature
in evaluate-requirements from module targets
in common-properties2 from module targets
in targets.common-properties from module targets
in class_at_basic-target.generate from module object(alias-target-class)@8350
in generate-really from module object(main-target)@8438
in class_at_main-target.generate from module object(main-target)@8438
in load from module build-system
in import from module modules
in boost-build from module
E:\Programming\VersionControl\modular-boost\boost-build.jam:17: in
module scope from module

Really ? I am telling Boost Build the gcc version when I invoke b2. Dois
boost Build really mean to say that a toolset name, even with different
versions of a given toolset, must have different requirements for b2 to
pick the right one to use ? That is pretty awful and clearly keeps me
from specifying different versions of the same toolset with the same
requirements. Which I find endlessly amusing since I can obviously
specify different versions of a toolset in my user-config as long as I
specify no requirements at all, when requirements are allowed.

Boost-Build list run by bdawes at, david.abrahams at, gregod at, cpdaniel at, john at