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
> 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
> 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