VS: Accept and translate '-T version=' values with three components

The VS 16.8 and VS 16.9 toolset versions differ only in their third
component.  The `vcvarsall` option `-vcvars_ver=` accepts a three
component version, so accept this format for VS toolset selection too.

Issue: #21922
This commit is contained in:
Brad King
2021-03-12 08:01:54 -05:00
parent 58a50a3a0a
commit 30c835428f
3 changed files with 57 additions and 0 deletions

View File

@@ -19,3 +19,15 @@ its ``Microsoft.VCToolsVersion.*.props`` file names.
VS 16.9's toolset may also be specified as ``14.28.16.9`` because
VS 16.10 uses the file name ``Microsoft.VCToolsVersion.14.28.16.9.props``.
Three-Component MSVC Toolset Versions
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. versionadded:: 3.19.7
The ``version=`` field may be given a three-component toolset version
such as ``14.28.29910``, and CMake will convert it to the name used by
MSBuild ``Microsoft.VCToolsVersion.*.props`` files. This is useful
to distinguish between VS 16.8's ``14.28.29333`` toolset and VS 16.9's
``14.28.29910`` toolset. It also matches ``vcvarsall``'s ``-vcvars_ver=``
behavior.