From b45d8432c2d710eef0bc236a983b0fad4616ed5c Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 21 Aug 2017 11:48:20 -0400 Subject: [PATCH 1/2] InstallRequiredSystemLibraries: Factor redist name into variable Store the `VC###` component of the `Microsoft.VC###.CRT` directory name in a variable set based on the toolchain version. Its naming convention is changed by VS 15.3. --- Modules/InstallRequiredSystemLibraries.cmake | 26 ++++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/Modules/InstallRequiredSystemLibraries.cmake b/Modules/InstallRequiredSystemLibraries.cmake index 6d33fc6ecd..4bf870bab6 100644 --- a/Modules/InstallRequiredSystemLibraries.cmake +++ b/Modules/InstallRequiredSystemLibraries.cmake @@ -89,6 +89,8 @@ if(MSVC) endif() if(MSVC_VERSION EQUAL 1400) + set(MSVC_REDIST_NAME VC80) + # Find the runtime library redistribution directory. get_filename_component(msvc_install_dir "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\8.0;InstallDir]" ABSOLUTE) @@ -129,6 +131,8 @@ if(MSVC) endif() if(MSVC_VERSION EQUAL 1500) + set(MSVC_REDIST_NAME VC90) + # Find the runtime library redistribution directory. get_filename_component(msvc_install_dir "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\9.0;InstallDir]" ABSOLUTE) @@ -172,21 +176,27 @@ if(MSVC) endif() if(MSVC_VERSION EQUAL 1910) + set(MSVC_REDIST_NAME VC150) set(_MSVCRT_DLL_VERSION 140) set(_MSVCRT_IDE_VERSION 15) elseif(MSVC_VERSION EQUAL 1900) + set(MSVC_REDIST_NAME VC140) set(_MSVCRT_DLL_VERSION 140) set(_MSVCRT_IDE_VERSION 14) elseif(MSVC_VERSION EQUAL 1800) + set(MSVC_REDIST_NAME VC120) set(_MSVCRT_DLL_VERSION 120) set(_MSVCRT_IDE_VERSION 12) elseif(MSVC_VERSION EQUAL 1700) + set(MSVC_REDIST_NAME VC110) set(_MSVCRT_DLL_VERSION 110) set(_MSVCRT_IDE_VERSION 11) elseif(MSVC_VERSION EQUAL 1600) + set(MSVC_REDIST_NAME VC100) set(_MSVCRT_DLL_VERSION 100) set(_MSVCRT_IDE_VERSION 10) else() + set(MSVC_REDIST_NAME "") set(_MSVCRT_DLL_VERSION "") set(_MSVCRT_IDE_VERSION "") endif() @@ -219,10 +229,10 @@ if(MSVC) unset(_vs_dir) unset(programfilesx86) endif() - find_path(MSVC_REDIST_DIR NAMES ${CMAKE_MSVC_ARCH}/Microsoft.VC${vs}0.CRT PATHS ${_vs_redist_paths}) + find_path(MSVC_REDIST_DIR NAMES ${CMAKE_MSVC_ARCH}/Microsoft.${MSVC_REDIST_NAME}.CRT PATHS ${_vs_redist_paths}) unset(_vs_redist_paths) mark_as_advanced(MSVC_REDIST_DIR) - set(MSVC_CRT_DIR "${MSVC_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC${vs}0.CRT") + set(MSVC_CRT_DIR "${MSVC_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.${MSVC_REDIST_NAME}.CRT") if(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY) set(__install__libs @@ -242,7 +252,7 @@ if(MSVC) if(CMAKE_INSTALL_DEBUG_LIBRARIES) set(MSVC_CRT_DIR - "${MSVC_REDIST_DIR}/Debug_NonRedist/${CMAKE_MSVC_ARCH}/Microsoft.VC${vs}0.DebugCRT") + "${MSVC_REDIST_DIR}/Debug_NonRedist/${CMAKE_MSVC_ARCH}/Microsoft.${MSVC_REDIST_NAME}.DebugCRT") set(__install__libs ${__install__libs} "${MSVC_CRT_DIR}/msvcp${v}d.dll" ) @@ -410,7 +420,7 @@ if(MSVC) # Starting with VS 15 the MFC DLLs may be in a different directory. if (NOT vs VERSION_LESS 15) file(GLOB _MSVC_REDIST_DIRS "${MSVC_REDIST_DIR}/../*") - find_path(MSVC_REDIST_MFC_DIR NAMES ${CMAKE_MSVC_ARCH}/Microsoft.VC${vs}0.MFC + find_path(MSVC_REDIST_MFC_DIR NAMES ${CMAKE_MSVC_ARCH}/Microsoft.${MSVC_REDIST_NAME}.MFC PATHS ${_MSVC_REDIST_DIRS} NO_DEFAULT_PATH) mark_as_advanced(MSVC_REDIST_MFC_DIR) unset(_MSVC_REDIST_DIRS) @@ -424,7 +434,7 @@ if(MSVC) if(CMAKE_INSTALL_DEBUG_LIBRARIES) set(MSVC_MFC_DIR - "${MSVC_REDIST_MFC_DIR}/Debug_NonRedist/${CMAKE_MSVC_ARCH}/Microsoft.VC${vs}0.DebugMFC") + "${MSVC_REDIST_MFC_DIR}/Debug_NonRedist/${CMAKE_MSVC_ARCH}/Microsoft.${MSVC_REDIST_NAME}.DebugMFC") set(__install__libs ${__install__libs} "${MSVC_MFC_DIR}/mfc${v}ud.dll" "${MSVC_MFC_DIR}/mfcm${v}ud.dll" @@ -437,7 +447,7 @@ if(MSVC) endif() endif() - set(MSVC_MFC_DIR "${MSVC_REDIST_MFC_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC${vs}0.MFC") + set(MSVC_MFC_DIR "${MSVC_REDIST_MFC_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.${MSVC_REDIST_NAME}.MFC") if(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY) set(__install__libs ${__install__libs} "${MSVC_MFC_DIR}/mfc${v}u.dll" @@ -452,7 +462,7 @@ if(MSVC) endif() # include the language dll's as well as the actuall dll's - set(MSVC_MFCLOC_DIR "${MSVC_REDIST_MFC_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC${vs}0.MFCLOC") + set(MSVC_MFCLOC_DIR "${MSVC_REDIST_MFC_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.${MSVC_REDIST_NAME}.MFCLOC") set(__install__libs ${__install__libs} "${MSVC_MFCLOC_DIR}/mfc${v}chs.dll" "${MSVC_MFCLOC_DIR}/mfc${v}cht.dll" @@ -500,7 +510,7 @@ if(MSVC) if(_MSOMP_DLL_VERSION) set(v "${_MSOMP_DLL_VERSION}") set(vs "${_MSOMP_IDE_VERSION}") - set(MSVC_OPENMP_DIR "${MSVC_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.VC${vs}0.OPENMP") + set(MSVC_OPENMP_DIR "${MSVC_REDIST_DIR}/${CMAKE_MSVC_ARCH}/Microsoft.${MSVC_REDIST_NAME}.OPENMP") if(NOT CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY) set(__install__libs ${__install__libs} From 23cf9e152f097b18f345e17b26063fa4d38e2267 Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 21 Aug 2017 11:58:08 -0400 Subject: [PATCH 2/2] InstallRequiredSystemLibraries: Find VS 2017 Update 3 redist directory Add compiler version 19.11 to our table. Fixes: #17184 --- Modules/InstallRequiredSystemLibraries.cmake | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/Modules/InstallRequiredSystemLibraries.cmake b/Modules/InstallRequiredSystemLibraries.cmake index 4bf870bab6..1a4e268e55 100644 --- a/Modules/InstallRequiredSystemLibraries.cmake +++ b/Modules/InstallRequiredSystemLibraries.cmake @@ -175,7 +175,11 @@ if(MSVC) endif() endif() - if(MSVC_VERSION EQUAL 1910) + if(MSVC_VERSION EQUAL 1911) + set(MSVC_REDIST_NAME VC141) + set(_MSVCRT_DLL_VERSION 140) + set(_MSVCRT_IDE_VERSION 15) + elseif(MSVC_VERSION EQUAL 1910) set(MSVC_REDIST_NAME VC150) set(_MSVCRT_DLL_VERSION 140) set(_MSVCRT_IDE_VERSION 15) @@ -393,7 +397,10 @@ if(MSVC) ) endif() - if(MSVC_VERSION EQUAL 1910) + if(MSVC_VERSION EQUAL 1911) + set(_MFC_DLL_VERSION 140) + set(_MFC_IDE_VERSION 15) + elseif(MSVC_VERSION EQUAL 1910) set(_MFC_DLL_VERSION 140) set(_MFC_IDE_VERSION 15) elseif(MSVC_VERSION EQUAL 1900) @@ -481,7 +488,10 @@ if(MSVC) # MSVC 8 was the first version with OpenMP # Furthermore, there is no debug version of this if(CMAKE_INSTALL_OPENMP_LIBRARIES) - if(MSVC_VERSION EQUAL 1910) + if(MSVC_VERSION EQUAL 1911) + set(_MSOMP_DLL_VERSION 140) + set(_MSOMP_IDE_VERSION 15) + elseif(MSVC_VERSION EQUAL 1910) set(_MSOMP_DLL_VERSION 140) set(_MSOMP_IDE_VERSION 15) elseif(MSVC_VERSION EQUAL 1900)