Subject: Re: [boost] Boost CMake update
From: paul (pfultz2_at_[hidden])
Date: 2017-10-04 15:16:59
On Wed, 2017-10-04 at 03:09 +0300, Peter Dimov via Boost wrote:
> paul wrote:
> > >
> > > As I already mentioned a number of times, this in my opinion must be
> > >
> > > Â Â Â Â find_package(boost_assert VERSION 1.64.0 EXACT)
> > >
> > > because there is never, ever, a scenario in which I want boost_coreÂ
> > > 1.64.0 to link to boost_assert 1.58.0.
> > The user may want to use boost_core 1.64.0 with boost_assert 1.64.1 orÂ
> > 1.65 because perhaps the newer version is from develop that fixes aÂ
> > problem they are having.
> Yeah. How would this scenario come into being though? Suppose you haveÂ
> 1.64.0 already installed; you replace boost_assert from develop and now, asÂ
> also mentioned a number of times, you have all manners of ODR violationsÂ
> because your libraries are built against boost_assert 1.64.0 and you'reÂ
> including the develop one.Â
If you change your dependencies, you would most likely change the library that
depend on those as well.Â
Even if they didn't rebuild, it doesn't always mean it would lead to an ODR
violation, as the change could only affect some assert macros that are not
used in the definition.
Of course, adding the version doesn't prevent the scenario you mention. They
could just reinstall a whole new version of boost 1.65 and the libraries that
were built against boost 1.64 would be broken.
Or they could create a superproject of the different boost modules, with using
1.64 for everything except boost_assert. This still would affect downstream
libraries that were built against an older version of boost.