Boost logo

Boost :

From: Alexander Grund (alexander.grund_at_[hidden])
Date: 2019-06-04 06:30:03


Hi all,

I discovered a severe logic flaw in the generated CMake Config files for
the new Boost 1.70 which make them almost unusable.

As an example the static variant contains:

if(NOT"${Boost_USE_STATIC_LIBS}"STREQUAL""ANDNOTBoost_USE_STATIC_LIBS)
_BOOST_SKIPPED("libboost_filesystem.a""static,
Boost_USE_STATIC_LIBS=${Boost_USE_STATIC_LIBS}")
return()
endif()
if(BUILD_SHARED_LIBS)
_BOOST_SKIPPED("libboost_filesystem.a""static,
BUILD_SHARED_LIBS=${BUILD_SHARED_LIBS}, set Boost_USE_STATIC_LIBS=ON to
override")
return()
endif()
The shared variant contains:
if(NOT"${Boost_USE_STATIC_LIBS}"STREQUAL""ANDBoost_USE_STATIC_LIBS)
_BOOST_SKIPPED("libboost_filesystem.so.1.70.0""shared,
Boost_USE_STATIC_LIBS=${Boost_USE_STATIC_LIBS}")
return()
endif()
if(NOTBUILD_SHARED_LIBS)
_BOOST_SKIPPED("libboost_filesystem.so.1.70.0""shared, BUILD_SHARED_LIBS
not ON, set Boost_USE_STATIC_LIBS=OFF to override")
return()
endif()
Although the message text says otherwise the 2nd return in both cases
depends solely on BUILD_SHARED_LIBS.
I'm pretty sure the intention was too check for BUILD_SHARED_LIBS *only*
if Boost_USE_STATIC_LIBS is not set (see thread
https://lists.boost.org/Archives/boost/2019/02/245030.php). As can be
seen this is not the case.
I haven't found the repo which contains the code that generates this so
I can't report it there or fix it myself.
As the issue here makes using Boost 1.70 (almost) impossible (in
Scenarios like BUILD_SHARED_LIBS=ON (a CMake variable influencing the
project build) and Boost_USE_STATIC_LIBS=ON) I'd recommend fixing this
and pushing out a bugfix release.
Regards, Alexander Grund




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