-
Notifications
You must be signed in to change notification settings - Fork 48
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix toolset version for VS2017 (should be 14.1) #167
Conversation
Just to be clear, the version of the c++ compiler is "15", it is the CRT that is only being incremented to "14.1". |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There are wrong registry values being queried
src/tools/msvc.jam
Outdated
@@ -1624,7 +1624,7 @@ if [ MATCH (--debug-configuration) : [ modules.peek : ARGV ] ] | |||
.version-11.0-reg = "VisualStudio\\11.0\\Setup\\VC" ; | |||
.version-12.0-reg = "VisualStudio\\12.0\\Setup\\VC" ; | |||
.version-14.0-reg = "VisualStudio\\14.0\\Setup\\VC" ; | |||
.version-15.0-reg = "VisualStudio\\15.0\\Setup\\VC" ; | |||
.version-14.1-reg = "VisualStudio\\14.1\\Setup\\VC" ; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks like classic copy&paste. I don't have any of those registry values. Any hints on the real registry values are welcome.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
They don't have register keys for VS2017. Should I just remove it?
How to support properly VS2017 path detection is still being debated in #157
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, it is better to remove them in this case. I've taken a look into #157 but I'm not sure which way to go. And I'm still not convinced that we call the thing "14.1"
src/tools/msvc.py
Outdated
@@ -1293,7 +1293,7 @@ def first(self): | |||
__version_11_0_reg = "VisualStudio\\11.0\\Setup\\VC" | |||
__version_12_0_reg = "VisualStudio\\12.0\\Setup\\VC" | |||
__version_14_0_reg = "VisualStudio\\14.0\\Setup\\VC" | |||
__version_15_0_reg = "VisualStudio\\15.0\\Setup\\VC" | |||
__version_14_1_reg = "VisualStudio\\14.1\\Setup\\VC" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
and copy&paster error, too.
I think it's similar to VS 2013 - 7.1, so toolset should be 14.1. But for VS2013 IDE version was also 7.1 (IDE version for VS2017 15.0) |
As far as I can remember, we've always used the version of the "VC", aka msvc, aka cl, as the true number. We've never used the CRT nor the IDE version. |
These versions match with ide version or toolset version (crt dll). |
I stand corrected then :-) Are we sure the VS top-line version is 14.1 for VS 2017? PS.. Sorry if I'm late to the comments. Trying to catch up. |
The more I look at this, the more I wonder what microsoft was thinking... The directory that the visual studio tools are installed in is Looking at the properties of cl.exe, the "File version" is 19.10.24930.0, the "Product version" is 14.10.24930.0. Looking at the runtime, in So there is a 14.10 directory, that contains modules (side-by-side assemblies?) labeled with "VC150", containing DLLs that specify "140". I don't think the runtime is generally relevant to us, but this is going to cause major confusion among developers! Looking at the versions in visual studio under help->about, the displayed info is: The actual tool lines such as "Visual C++ 2017 RC" only have some kind of UID next to them that doesn't seem to translate into a version number (just like in VS2015). I vote we call the toolset "msvc-15.0" and "vc15", as microsoft is loudly trumpeting this as visual studio version "15". |
At one point I think there was a link to a microsoft blog post explaining all this posted to the mailing list, does anyone happen to have a link to that? I'm not having much luck finding it. |
I've also found this page, updated today, that lists the various build tools as being 15.0.X. Specifically this line: |
I think this comment related to your question https://www.reddit.com/r/cpp/comments/5ut2bw/visual_studio_2017_isnt_supported_by_boost/ddzgtcm/
It's toolset installer for VS2017, so it should be 15.00. But yes it's confusing |
/cc @AndrewPardoe |
Toolset version for VS2017 is 14.1. IDE version 15.00 boostorg/config#119 (comment) |
Well.. I see three choices given all the above links to docs:
I don't see #1 as having any advantages for ourselves or for users. It's obscure enough to not be relevant. And it doesn't match what users might expect. #2 has the advantage that it's something users might point to visually when referring to what they have installed. But since it's my understanding that this version will not match the compiler itself, which is what we most care about, I don't see it as a big advantage. Last, #3.. It has the advantage that it's an easy version number to obtain for users. Also it's not susceptible to marketing version and packaged product versions fluctuations. It does have the disadvantage of producing a jump in the b2 toolset numbers. But I think that's a minor problem, if we don't go trying to back-fix numbers. So.. Maybe we should make it 19.10 (ie vc1910)? |
But this is the version that would be in dll name, like And we can't change this version for old VS versions |
JFI Boost Library Naming http://www.boost.org/doc/libs/1_42_0/more/getting_started/unix-variants.html#library-naming |
IDK why Boost toolset enumeration contains version only for Visual Studio |
Do we have a bottom line for me to improve #170? |
Quick voting. Add reaction to this post 👍 if you think toolset should be 14.10, 👎 if you think it should remain 15.00, or 😕 if you uncertain |
Voting with my feet at #170 |
Changed it in develop to 1410. |
Related SuperElastix ticket: #12 "Bump Boost version" See also: "[CMake] MSVC15 variable available for Visual Studio 2017" http://public.kitware.com/pipermail/cmake/2017-January/064815.html "Notes on Visual Studio 15" https://build2.org/article/notes-visual-studio-15.xhtml "Fix toolset version for VS2017 (should be 14.1)" boostorg/build#167 boost_1_65_0\boost\config\compiler\visualc.hpp, which says: # elif _MSC_VER < 1920 # define BOOST_COMPILER_VERSION 14.1 C:\Program Files\CMake\share\cmake-3.9\Modules\FindBoost.cmake, which says: if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.10) list(APPEND ${componentlibvar} ${basedir}/lib${_arch_suffix}-msvc-14.1)
Related to #157