Commit 304f493e authored by Arkady Shapkin's avatar Arkady Shapkin Committed by Brad King
Browse files

MSVC: Add MSVC_TOOLSET_VERSION variable

Provide the MSVC toolset version number based on the compiler version.

Fixes: #16923
parent 561238bb
......@@ -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
......
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`.
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)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment