aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorakhropov <akhropov@yandex-team.com>2024-06-04 13:38:03 +0300
committerakhropov <akhropov@yandex-team.com>2024-06-04 13:49:16 +0300
commita3be9e767f11083d9c5fbc634157367aad15a43f (patch)
treea617134e515e8956d74330508ddf474f7ad1ce1e
parent4106eea04f837a5213898cf991d9db841a841870 (diff)
downloadydb-a3be9e767f11083d9c5fbc634157367aad15a43f.tar.gz
Properly detect Visual Studio version if non-standard toolset for this version is used.. #2302
0843dd6fab7789634d13bdde50586f8d122288fa
-rw-r--r--build/export_generators/cmake/cmake/conan.cmake14
-rw-r--r--build/export_generators/hardcoded-cmake/cmake/conan.cmake14
2 files changed, 28 insertions, 0 deletions
diff --git a/build/export_generators/cmake/cmake/conan.cmake b/build/export_generators/cmake/cmake/conan.cmake
index a8e812acbd1..5e42e26c9d4 100644
--- a/build/export_generators/cmake/cmake/conan.cmake
+++ b/build/export_generators/cmake/cmake/conan.cmake
@@ -39,6 +39,20 @@ include(CMakeParseArguments)
function(_get_msvc_ide_version result)
set(${result} "" PARENT_SCOPE)
+
+ # VisualStudioVersion is set by vcvars*.bat
+ if(DEFINED ENV{VisualStudioVersion})
+ string(REGEX MATCH "([0-9]+)\.0" _ $ENV{VisualStudioVersion})
+ if(CMAKE_MATCH_COUNT EQUAL 1)
+ set(${result} ${CMAKE_MATCH_1} PARENT_SCOPE)
+ return()
+ else()
+ message(FATAL_ERROR "Conan: Unexpected env variable VisualStudioVersion format [$ENV{VisualStudioVersion}]")
+ endif()
+ endif()
+
+ # fallback to MSVC_VERSION which is set only based on _MSC_VER and can differ from the really installed
+ # Visual Studio version if non-standard toolset is used
if(NOT MSVC_VERSION VERSION_LESS 1400 AND MSVC_VERSION VERSION_LESS 1500)
set(${result} 8 PARENT_SCOPE)
elseif(NOT MSVC_VERSION VERSION_LESS 1500 AND MSVC_VERSION VERSION_LESS 1600)
diff --git a/build/export_generators/hardcoded-cmake/cmake/conan.cmake b/build/export_generators/hardcoded-cmake/cmake/conan.cmake
index a8e812acbd1..5e42e26c9d4 100644
--- a/build/export_generators/hardcoded-cmake/cmake/conan.cmake
+++ b/build/export_generators/hardcoded-cmake/cmake/conan.cmake
@@ -39,6 +39,20 @@ include(CMakeParseArguments)
function(_get_msvc_ide_version result)
set(${result} "" PARENT_SCOPE)
+
+ # VisualStudioVersion is set by vcvars*.bat
+ if(DEFINED ENV{VisualStudioVersion})
+ string(REGEX MATCH "([0-9]+)\.0" _ $ENV{VisualStudioVersion})
+ if(CMAKE_MATCH_COUNT EQUAL 1)
+ set(${result} ${CMAKE_MATCH_1} PARENT_SCOPE)
+ return()
+ else()
+ message(FATAL_ERROR "Conan: Unexpected env variable VisualStudioVersion format [$ENV{VisualStudioVersion}]")
+ endif()
+ endif()
+
+ # fallback to MSVC_VERSION which is set only based on _MSC_VER and can differ from the really installed
+ # Visual Studio version if non-standard toolset is used
if(NOT MSVC_VERSION VERSION_LESS 1400 AND MSVC_VERSION VERSION_LESS 1500)
set(${result} 8 PARENT_SCOPE)
elseif(NOT MSVC_VERSION VERSION_LESS 1500 AND MSVC_VERSION VERSION_LESS 1600)