Prechádzať zdrojové kódy

FindMatlab: retrieve full major.minor.patch.tweak

scivision 2 rokov pred
rodič
commit
d7b73f14c2
1 zmenil súbory, kde vykonal 12 pridanie a 4 odobranie
  1. 12 4
      Modules/FindMatlab.cmake

+ 12 - 4
Modules/FindMatlab.cmake

@@ -380,9 +380,17 @@ endmacro()
 #]=======================================================================]
 macro(matlab_get_release_name_from_version version release_name)
 
+  # only the major.minor version is used
+  string(REGEX MATCH "([0-9]+\\.[0-9]+)" _match ${version})
+  if(CMAKE_MATCH_1)
+    set(short_version ${CMAKE_MATCH_1})
+  else()
+    set(short_version ${version})
+  endif()
+
   set(${release_name} "")
   foreach(_var IN LISTS MATLAB_VERSIONS_MAPPING)
-    string(REGEX MATCHALL "(.+)=${version}" _matched ${_var})
+    string(REGEX MATCHALL "(.+)=${short_version}" _matched ${_var})
     if(NOT _matched STREQUAL "")
       set(${release_name} ${CMAKE_MATCH_1})
       break()
@@ -392,7 +400,7 @@ macro(matlab_get_release_name_from_version version release_name)
   unset(_var)
   unset(_matched)
   if(${release_name} STREQUAL "")
-    message(WARNING "[MATLAB] The version ${version} is not registered")
+    message(WARNING "[MATLAB] The version ${short_version} is not registered")
   endif()
 
 endmacro()
@@ -1396,12 +1404,12 @@ function(_Matlab_VersionInfoXML)
 
   if(versioninfo_string)
     # parses "<version>23.2.0.2365128</version>"
-    string(REGEX MATCH "<version>(.*)</version>"
+    string(REGEX MATCH "<version>([0-9]+\\.[0-9]+\\.?[0-9]*\\.?[0-9]*)</version>"
       version_reg_match
       ${versioninfo_string}
       )
 
-    if(CMAKE_MATCH_1 MATCHES "(([0-9]+)\\.([0-9]+))[\\.0-9]*")
+    if(CMAKE_MATCH_1)
       set(_matlab_version_tmp "${CMAKE_MATCH_1}")
     endif()
   endif()