From: Stephan T. Lavavej (stl_at_[hidden])
Date: 2019-07-15 22:01:28
> Or just rename the libs so they have the expected name. vc140, vc141 and
> vc142 are ABI-compatible AFAIK (and I know from good source vc142 is not gonna break that).
There's a potential issue with doing that. Binary compatibility between the 2015, 2017, and 2019 toolsets comes with a couple of restrictions: no LTCG (which is a non-issue here), and the final link must be performed by a toolset that's as new as (or newer than) all of the object files and libraries being linked. For example, you can't take VS 2019 16.1 (v142) compiled libraries, and perform a final link with VS 2015 RTM (v140). And in practice, I am aware of at least one build break that can be encountered when attempting this (as we added a vectorized implementation of std::reverse that requires separately compiled support to be dragged in during the final link).
This binary compatibility allows application developers to upgrade their toolsets without blocking on all of their separately compiled libraries upgrading to the same toolset. It is specifically not intended to allow separately compiled libraries to upgrade their toolset beyond what their consuming applications are ready for.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk