Boost logo

Boost :

From: Peter Dimov (pdimov_at_[hidden])
Date: 2019-06-08 17:29:37


Alexander Grund wrote:

> Hi Peter,
>
> thanks, yes this fixes the issue, although I'd used an "elseif" to reduce
> the nesting.
>
> Another possible issue is pretty much every use of `if(NOT Boost_*`, e.g.
> `if(NOT Boost_USE_STATIC_RUNTIME)`. The CMake FindModule documents this as
> "Set to ON or OFF to specify whether to use libraries linked statically to
> the C++ runtime ('s' tag). Default is platform dependent.". The current
> implementation is "Default is OFF".

Yes, this is intentional.

https://github.com/boostorg/boost_install/blob/develop/BoostConfig.cmake#L30-L31

Both `b2 install` and autolink default to shared runtime under Windows.

> This should be checked for all other variables too. E.g.
> "Boost_USE_DEBUG_RUNTIME" should default to "ON". Currently it seems to be
> kinda random: Depending on which variant file gets sourced last, that's
> the one that wins. Not sure how to solve this other than ordering the
> variant includes appropriately.

It's very rare for there to be two variants that only differ by the
debugness / debugity of the runtime; the typical case is a debug build using
the debug runtime, and a release build using the release runtime. I'm not
even sure if it's possible to mix debug/release with the "other" runtime. So
this shouldn't be a problem in practice.

> Finally: All uses of `message` should be reevaluated and either removed or
> guarded by `Boost_DEBUG` or `*_FIND_QUIETLY`.

This was one of the first things to be fixed; the current master/develop
should not issue any messages at all unless Boost_DEBUG or Boost_VERBOSE are
set, per established CMake practices (of which I wasn't aware previously).

> - Adding the _BOOST_INCLUDEDIR is not required. All targets depend on
> Boost::headers which has them. Same for BOOST_ALL_NO_LIB definition

Shouldn't hurt.

> - Regarding: "find_dependency doesn't forward arguments until 3.9, so we
> have to roll our own". This does not seem correct:
https://cmake.org/cmake/help/v3.0/module/CMakeFindDependencyMacro.html

The comment is no longer correct, so I've already removed it. It used to be
correct though; CMake 3.9+ forward additional arguments (${ARGN}) from
find_dependency, such as `HINTS ...`.


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