Boost logo

Boost :

Subject: [boost] [config] 'requres' doesn't take differing -std into account
From: Peter Dimov (lists_at_[hidden])
Date: 2015-06-21 10:19:32


I have, in my user-config.jam,

using gcc ;

feature.subfeature toolset gcc : std : cxx0x cxx11 cxx1y cxx14 : optional
composite propagated ;

feature.compose <toolset-gcc:std>cxx0x : <cxxflags>-std=c++0x ;
feature.compose <toolset-gcc:std>cxx11 : <cxxflags>-std=c++11 ;
feature.compose <toolset-gcc:std>cxx1y : <cxxflags>-std=c++1y ;
feature.compose <toolset-gcc:std>cxx14 : <cxxflags>-std=c++14 ;

using clang : : : <cxxflags>-Wno-variadic-macros
<cxxflags>-Wno-c99-extensions ;

feature.subfeature toolset clang : std : cxx0x cxx11 cxx1y cxx14 : optional
composite propagated ;

feature.compose <toolset-clang:std>cxx0x : <cxxflags>-std=c++0x ;
feature.compose <toolset-clang:std>cxx11 : <cxxflags>-std=c++11 ;
feature.compose <toolset-clang:std>cxx1y : <cxxflags>-std=c++1y ;
feature.compose <toolset-clang:std>cxx14 : <cxxflags>-std=c++14 ;

This allows me to use toolset=clang (without -std) and toolset=clang-cxx11
(with -std=c++11).

The 'requires' rule however caches the results of the configuration check
when I run with toolset=clang, and then when I rerun with
toolset=clang-cxx11, it uses the cached values, which is wrong.

I use something like

run test.cpp : : : [ requires cxx11_variadic_templates
cxx11_template_aliases cxx11_hdr_type_traits cxx11_hdr_tuple ] ;


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