From db81a2703b847428d8a419d7b66e4b66bfdc71ea Mon Sep 17 00:00:00 2001 From: Max Risuhin Date: Mon, 1 May 2017 20:19:45 +0300 Subject: [PATCH] ARROW-928: [C++] Detect supported MSVC versions --- cpp/cmake_modules/CompilerInfo.cmake | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/cpp/cmake_modules/CompilerInfo.cmake b/cpp/cmake_modules/CompilerInfo.cmake index 3c603918a82e..21e2dafba2e2 100644 --- a/cpp/cmake_modules/CompilerInfo.cmake +++ b/cpp/cmake_modules/CompilerInfo.cmake @@ -17,7 +17,11 @@ # # Sets COMPILER_FAMILY to 'clang' or 'gcc' # Sets COMPILER_VERSION to the version -execute_process(COMMAND "${CMAKE_CXX_COMPILER}" -v +if (NOT MSVC) + set(COMPILER_GET_VERSION_SWITCH "-v") +endif() + +execute_process(COMMAND "${CMAKE_CXX_COMPILER}" ${COMPILER_GET_VERSION_SWITCH} ERROR_VARIABLE COMPILER_VERSION_FULL) message(INFO "Compiler version: ${COMPILER_VERSION_FULL}") message(INFO "Compiler id: ${CMAKE_CXX_COMPILER_ID}") @@ -25,6 +29,13 @@ string(TOLOWER "${COMPILER_VERSION_FULL}" COMPILER_VERSION_FULL_LOWER) if(MSVC) set(COMPILER_FAMILY "msvc") + if ("${COMPILER_VERSION_FULL}" MATCHES ".*Microsoft \\(R\\) C/C\\+\\+ Optimizing Compiler Version 19.*x64") + string(REGEX REPLACE ".*Optimizing Compiler Version ([0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+).*" "\\1" + COMPILER_VERSION "${COMPILER_VERSION_FULL}") + elseif(NOT "${COMPILER_VERSION_FULL}" STREQUAL "") + message(FATAL_ERROR "Not supported MSVC compiler:\n${COMPILER_VERSION_FULL}\n" + "Supported MSVC versions: Visual Studio 2015 2017 x64") + endif() # clang on Linux and Mac OS X before 10.9 elseif("${COMPILER_VERSION_FULL}" MATCHES ".*clang version.*")