Skip to content

Commit a3be9e7

Browse files
Properly detect Visual Studio version if non-standard toolset for this version is used.. #2302
0843dd6fab7789634d13bdde50586f8d122288fa
1 parent 4106eea commit a3be9e7

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

build/export_generators/cmake/cmake/conan.cmake

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,20 @@ include(CMakeParseArguments)
3939

4040
function(_get_msvc_ide_version result)
4141
set(${result} "" PARENT_SCOPE)
42+
43+
# VisualStudioVersion is set by vcvars*.bat
44+
if(DEFINED ENV{VisualStudioVersion})
45+
string(REGEX MATCH "([0-9]+)\.0" _ $ENV{VisualStudioVersion})
46+
if(CMAKE_MATCH_COUNT EQUAL 1)
47+
set(${result} ${CMAKE_MATCH_1} PARENT_SCOPE)
48+
return()
49+
else()
50+
message(FATAL_ERROR "Conan: Unexpected env variable VisualStudioVersion format [$ENV{VisualStudioVersion}]")
51+
endif()
52+
endif()
53+
54+
# fallback to MSVC_VERSION which is set only based on _MSC_VER and can differ from the really installed
55+
# Visual Studio version if non-standard toolset is used
4256
if(NOT MSVC_VERSION VERSION_LESS 1400 AND MSVC_VERSION VERSION_LESS 1500)
4357
set(${result} 8 PARENT_SCOPE)
4458
elseif(NOT MSVC_VERSION VERSION_LESS 1500 AND MSVC_VERSION VERSION_LESS 1600)

build/export_generators/hardcoded-cmake/cmake/conan.cmake

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,20 @@ include(CMakeParseArguments)
3939

4040
function(_get_msvc_ide_version result)
4141
set(${result} "" PARENT_SCOPE)
42+
43+
# VisualStudioVersion is set by vcvars*.bat
44+
if(DEFINED ENV{VisualStudioVersion})
45+
string(REGEX MATCH "([0-9]+)\.0" _ $ENV{VisualStudioVersion})
46+
if(CMAKE_MATCH_COUNT EQUAL 1)
47+
set(${result} ${CMAKE_MATCH_1} PARENT_SCOPE)
48+
return()
49+
else()
50+
message(FATAL_ERROR "Conan: Unexpected env variable VisualStudioVersion format [$ENV{VisualStudioVersion}]")
51+
endif()
52+
endif()
53+
54+
# fallback to MSVC_VERSION which is set only based on _MSC_VER and can differ from the really installed
55+
# Visual Studio version if non-standard toolset is used
4256
if(NOT MSVC_VERSION VERSION_LESS 1400 AND MSVC_VERSION VERSION_LESS 1500)
4357
set(${result} 8 PARENT_SCOPE)
4458
elseif(NOT MSVC_VERSION VERSION_LESS 1500 AND MSVC_VERSION VERSION_LESS 1600)

0 commit comments

Comments
 (0)