浏览代码

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 8 年之前
父节点
当前提交
082c0375d9
共有 1 个文件被更改,包括 14 次插入7 次删除
  1. 14 7
      Modules/InstallRequiredSystemLibraries.cmake

+ 14 - 7
Modules/InstallRequiredSystemLibraries.cmake

@@ -191,19 +191,26 @@ if(MSVC)
     set(vs "${_MSVCRT_IDE_VERSION}")
     set(vs "${_MSVCRT_IDE_VERSION}")
 
 
     # Find the runtime library redistribution directory.
     # 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}")
     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
       set(MSVC_REDIST_DIR "${MSVC${vs}_REDIST_DIR}") # use old cache entry
     endif()
     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"
         "${base_dir}/VC/redist"
         "$ENV{ProgramFiles}/Microsoft Visual Studio ${vs}.0/VC/redist"
         "$ENV{ProgramFiles}/Microsoft Visual Studio ${vs}.0/VC/redist"
         "$ENV{${programfilesx86}}/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)
     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.VC${vs}0.CRT")