Subject: Re: [boost] Boost CMake update
From: Peter Dimov (lists_at_[hidden])
Date: 2017-10-04 19:20:12
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.