Просмотр исходного кода

Merge topic 'FindMatlab-fix-exact-version' into release-3.28

7060e2135c FindMatlab: Restore support for finding EXACT major.minor version
88a1392270 FindMatlab: use correct registry view when extracting versions

Acked-by: Kitware Robot <[email protected]>
Merge-request: !9163
Brad King 2 лет назад
Родитель
Сommit
c0734d5507
1 измененных файлов с 12 добавлено и 1 удалено
  1. 12 1
      Modules/FindMatlab.cmake

+ 12 - 1
Modules/FindMatlab.cmake

@@ -481,6 +481,7 @@ function(matlab_extract_all_installed_versions_from_registry win64 matlab_versio
           cmake_host_system_information(RESULT _reg
             QUERY WINDOWS_REGISTRY "HKLM/SOFTWARE/Mathworks/${_installation_type}/${CMAKE_MATCH_1}"
             VALUE "MATLABROOT"
+            VIEW ${_view}
           )
 
           _Matlab_VersionInfoXML("${_reg}" _matlab_version_tmp)
@@ -1627,7 +1628,17 @@ set(Matlab_VERSION_STRING "NOTFOUND")
 set(Matlab_Or_MCR "UNKNOWN")
 if(_numbers_of_matlab_roots GREATER 0)
   if(Matlab_FIND_VERSION_EXACT)
-    list(FIND _matlab_possible_roots ${Matlab_FIND_VERSION} _list_index)
+    set(_list_index -1)
+    foreach(_matlab_root_index RANGE 1 ${_numbers_of_matlab_roots} 3)
+      list(GET _matlab_possible_roots ${_matlab_root_index} _matlab_root_version)
+      # only the major.minor version is used
+      string(REGEX REPLACE "^([0-9]+\\.[0-9]+).*" "\\1" _matlab_root_version "${_matlab_root_version}")
+      if(_matlab_root_version VERSION_EQUAL Matlab_FIND_VERSION)
+        set(_list_index ${_matlab_root_index})
+        break()
+      endif()
+    endforeach()
+
     if(_list_index LESS 0)
       set(_list_index 1)
     endif()