MSVC: Add MSVC_TOOLSET_VERSION variable
Provide the MSVC toolset version number based on the compiler version. Fixes: #16923
This commit is contained in:
parent
561238bb6f
commit
304f493e57
@ -239,6 +239,7 @@ Variables that Describe the System
|
||||
/variable/MSVC80
|
||||
/variable/MSVC90
|
||||
/variable/MSVC_IDE
|
||||
/variable/MSVC_TOOLSET_VERSION
|
||||
/variable/MSVC_VERSION
|
||||
/variable/UNIX
|
||||
/variable/WIN32
|
||||
|
6
Help/release/dev/msvc-toolset-version-variable.rst
Normal file
6
Help/release/dev/msvc-toolset-version-variable.rst
Normal file
@ -0,0 +1,6 @@
|
||||
msvc-toolset-version-variable
|
||||
-----------------------------
|
||||
|
||||
* A :variable:`MSVC_TOOLSET_VERSION` variable was added to provide the
|
||||
MSVC toolset version associated with the current MSVC compiler version
|
||||
in :variable:`MSVC_VERSION`.
|
21
Help/variable/MSVC_TOOLSET_VERSION.rst
Normal file
21
Help/variable/MSVC_TOOLSET_VERSION.rst
Normal file
@ -0,0 +1,21 @@
|
||||
MSVC_TOOLSET_VERSION
|
||||
--------------------
|
||||
|
||||
The toolset version of Microsoft Visual C/C++ being used if any.
|
||||
If MSVC-like is being used, this variable is set based on the version
|
||||
of the compiler as given by the :variable:`MSVC_VERSION` variable.
|
||||
|
||||
Known toolset version numbers are::
|
||||
|
||||
80 = VS 2005 (8.0)
|
||||
90 = VS 2008 (9.0)
|
||||
100 = VS 2010 (10.0)
|
||||
110 = VS 2012 (11.0)
|
||||
120 = VS 2013 (12.0)
|
||||
140 = VS 2015 (14.0)
|
||||
141 = VS 2017 (15.0)
|
||||
|
||||
Compiler versions newer than those known to CMake will be reported
|
||||
as the latest known toolset version.
|
||||
|
||||
See also the :variable:`MSVC_VERSION` variable.
|
@ -19,4 +19,5 @@ Known version numbers are::
|
||||
1900 = VS 14.0 (v140 toolset)
|
||||
1910-1919 = VS 15.0 (v141 toolset)
|
||||
|
||||
See also the :variable:`CMAKE_<LANG>_COMPILER_VERSION` variable.
|
||||
See also the :variable:`CMAKE_<LANG>_COMPILER_VERSION` and
|
||||
:variable:`MSVC_TOOLSET_VERSION` variable.
|
||||
|
@ -71,6 +71,31 @@ if(NOT MSVC_VERSION)
|
||||
message(FATAL_ERROR "MSVC compiler version not detected properly: ${_compiler_version}")
|
||||
endif()
|
||||
|
||||
if(MSVC_VERSION GREATER_EQUAL 1910)
|
||||
# VS 2017 or greater
|
||||
set(MSVC_TOOLSET_VERSION 141)
|
||||
elseif(MSVC_VERSION EQUAL 1900)
|
||||
# VS 2015
|
||||
set(MSVC_TOOLSET_VERSION 140)
|
||||
elseif(MSVC_VERSION EQUAL 1800)
|
||||
# VS 2013
|
||||
set(MSVC_TOOLSET_VERSION 120)
|
||||
elseif(MSVC_VERSION EQUAL 1700)
|
||||
# VS 2012
|
||||
set(MSVC_TOOLSET_VERSION 110)
|
||||
elseif(MSVC_VERSION EQUAL 1600)
|
||||
# VS 2010
|
||||
set(MSVC_TOOLSET_VERSION 100)
|
||||
elseif(MSVC_VERSION EQUAL 1500)
|
||||
# VS 2008
|
||||
set(MSVC_TOOLSET_VERSION 90)
|
||||
elseif(MSVC_VERSION EQUAL 1400)
|
||||
# VS 2005
|
||||
set(MSVC_TOOLSET_VERSION 80)
|
||||
else()
|
||||
# We don't support MSVC_TOOLSET_VERSION for earlier compiler.
|
||||
endif()
|
||||
|
||||
set(MSVC10)
|
||||
set(MSVC11)
|
||||
set(MSVC12)
|
||||
|
Loading…
Reference in New Issue
Block a user