Explorar o código

InstallRequiredSystemLibraries: Split VS 2017 search paths

VS 2017 does not have the same registry entries or other paths we
search for other VS versions.  Split the search code paths to treat
it separately.
Brad King %!s(int64=8) %!d(string=hai) anos
pai
achega
082c0375d9
Modificáronse 1 ficheiros con 14 adicións e 7 borrados
  1. 14 7
      Modules/InstallRequiredSystemLibraries.cmake

+ 14 - 7
Modules/InstallRequiredSystemLibraries.cmake

@@ -191,19 +191,26 @@ if(MSVC)
     set(vs "${_MSVCRT_IDE_VERSION}")
 
     # Find the runtime library redistribution directory.
-    get_filename_component(msvc_install_dir
-      "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\${vs}.0;InstallDir]" ABSOLUTE)
-    set(programfilesx86 "ProgramFiles(x86)")
     if(vs VERSION_LESS 15 AND DEFINED MSVC${vs}_REDIST_DIR AND EXISTS "${MSVC${vs}_REDIST_DIR}")
       set(MSVC_REDIST_DIR "${MSVC${vs}_REDIST_DIR}") # use old cache entry
     endif()
-    find_path(MSVC_REDIST_DIR NAMES ${CMAKE_MSVC_ARCH}/Microsoft.VC${vs}0.CRT
-      PATHS
-        "${msvc_install_dir}/../../VC/redist"
+    if(NOT vs VERSION_LESS 15)
+      set(_vs_redist_paths "")
+    else()
+      get_filename_component(_vs_dir
+        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\${vs}.0;InstallDir]" ABSOLUTE)
+      set(programfilesx86 "ProgramFiles(x86)")
+      set(_vs_redist_paths
+        "${_vs_dir}/../../VC/redist"
         "${base_dir}/VC/redist"
         "$ENV{ProgramFiles}/Microsoft Visual Studio ${vs}.0/VC/redist"
         "$ENV{${programfilesx86}}/Microsoft Visual Studio ${vs}.0/VC/redist"
-      )
+        )
+      unset(_vs_dir)
+      unset(programfilesx86)
+    endif()
+    find_path(MSVC_REDIST_DIR NAMES ${CMAKE_MSVC_ARCH}/Microsoft.VC${vs}0.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")