Boost logo

Boost :

Subject: Re: [boost] Boost CMake update
From: paul (pfultz2_at_[hidden])
Date: 2017-10-04 21:50:03


On Wed, 2017-10-04 at 22:20 +0300, Peter Dimov via Boost wrote:
> Stefan Seefeld wrote:
>
> >
> > Anyhow, I'm sorry this went off a tangent. My original point was to 
> > suggest that CMake (or any other future Boost build system) should
> > support 
> > modular builds, rather than expect Boost.X and Boost.Y always have the 
> > same version, or be part of the same source tree.
> I'm not sure that what I wanted to say got through, so I'll restate.
>
> The problem is not that X and Y have to have the same version. They don't.. 
> The problem is that Y has to have the same version.
>
> Suppose you install Boost 1.64. You get the headers of the header-only 
> library Y 1.64, the headers of the non-header-only library X 1.64 (that 
> include the headers of Y), and the built library X 1.64 that incorporates
> in 
> itself the headers of Y 1.64.
>
> You then upgrade Y to 1.65. Now you have the headers of Y 1.65.
>
> Your project uses X. It includes a X header. It includes a Y header (1.65). 
> So your program contains Y 1.65.
>
> Your project links to X. X has been built against Y 1.64. So your program 
> contains Y 1.64.
>
> This is what we (or rather, I) want to prevent with the version check. It's 
> not that X 1.64 absolutely has to require Y 1.64. It could - in principle - 
> require something else. But once built, it has to keep requiring the
> version 
> of Y it has been built with. 

But you are requiring that X 1.64 only to use Y 1.64. If we want it that once
its built, it keeps using the same version, we can have `bcm_auto_export` to
always generate the `find_dependency` with an `EXACT` argument using the
version Y it is built with.


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