
On Mon, Mar 13, 2017 at 2:34 PM, Beman Dawes via Boost < boost@lists.boost.org> wrote:
Boost.build in develop is treating VC++2017 RTW (aka RTM) as msvc-14.1.
Yet the Visual Studio 2017 RTW Help "About Microsoft Visual Studio" shows the version as "15.0.0-RTW+26228.4"
Shouldn't boost.build follow Microsoft's numbering? Seems like calling 2017 RTW anything except 15.0 is a recipe for confusion.
First, the toolset number that has been chosen is 14.10, not 14.1. Thus, you need to enter `b2 toolset=msvc-14.10` to build. I agree with Beman that not calling it 15.0 when microsoft is so clearly calling the release Visual Studio "15" is going to cause confusion. Additionally, when you have multiple projects (and multiple versions of the boost library), you want to use a visual studio environment variable to select the correct libraries. In our internal projects (and the visual studio binaries that we publish on sourceforge) we package the libraries in directories like "lib64-msvc-14.0", this can be accessed with the visual studio variable string `lib$(PlatformArchitecture)-msvc-$(VisualStudioVersion)`. In 2017 the VisualStudioVersion variable went to 15.0, and there is no available variable that gives 14.10 (or 14.1). On the other hand, the "toolset" that microsoft sets the compilers to is "v141". (Open a solution, right click on project, properties -> Configuration Properties -> General -> Platform Toolset -> Defaults to: "Visual Studio 2017 (v141)". This variable is then used to setup the build environment so that the correct compiler/linker, includes, libraries, etc are used. The version of the compiler (cl.exe) is actually 19.10, whereas the Visual Studio 2015 (msvc-14.0) was 19.00, it has typically been +5 compared to the vc/vs version. This was all done to signify some kind of abi compatibility (I haven't investigated what the practical applications of this are, or why one would care...does this mean we can link a build of boost made with msvc-14.0 with c++ application code compiled with msvc-14.10?). One can only hope that the toolset that ships with Visual Studio 2019(ish), visual studio 16.0 is v160. In short, Microsoft really screwed up the version numbering of this release (if you think this is bad, don't ask what you have to do to programatically find the compiler on disk, it requires COM calls now!), and we don't have a *good* option. As I said before, for my opinion, I think we should move to msvc-15.0 for the toolset, as that will be *less* confusion for the end-users. However, either way we go, we need to document this a lot better than we do now. It needs to be loud and clear in both the boost build documentation as well as the boost getting started docs. Tom