diff options
author | Chuck Atkins <chuck.atkins@kitware.com> | 2018-08-27 18:57:17 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2018-10-10 13:53:58 (GMT) |
commit | 7772bd31f57fd8b4d6a7937a97671eb34c966835 (patch) | |
tree | e77c4792444adbd75dcfedf23989f10d843503cf | |
parent | 3e5548784da085ee3a5ce3f7213c0cf281b68f31 (diff) | |
download | CMake-7772bd31f57fd8b4d6a7937a97671eb34c966835.zip CMake-7772bd31f57fd8b4d6a7937a97671eb34c966835.tar.gz CMake-7772bd31f57fd8b4d6a7937a97671eb34c966835.tar.bz2 |
FindMatlab: Guard against nonexistent installation
Logic added by commit v3.12.0-rc1~183^2 (FindMatlab: Matlab Runtime
Compiler support, 2017-04-29) assumes that `VersionInfo.xml` exists
in the installation. Fix it to tolerate a missing or empty file.
This change was originally made by commit v3.13.0-rc1~173^2 (FindMatlab:
Guard against nonexistent installation, 2018-08-27). Here we backport
it to the 3.12.x series.
Fixes: #18436
-rw-r--r-- | Modules/FindMatlab.cmake | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/Modules/FindMatlab.cmake b/Modules/FindMatlab.cmake index 2d04b84..d765bdf 100644 --- a/Modules/FindMatlab.cmake +++ b/Modules/FindMatlab.cmake @@ -1163,21 +1163,24 @@ function(_Matlab_get_version_from_root matlab_root matlab_or_mcr matlab_known_ve # return the updated value set(${matlab_final_version} ${Matlab_VERSION_STRING_INTERNAL} PARENT_SCOPE) - else() + elseif(EXISTS "${matlab_root}/VersionInfo.xml") # MCR # we cannot run anything in order to extract the version. We assume that the file # VersionInfo.xml exists under the MatlabRoot, we look for it and extract the version from there set(_matlab_version_tmp "unknown") file(STRINGS "${matlab_root}/VersionInfo.xml" versioninfo_string NEWLINE_CONSUME) - # parses "<version>9.2.0.538062</version>" - string(REGEX MATCH "<version>(.*)</version>" - version_reg_match - ${versioninfo_string} - ) - - if(NOT "${version_reg_match}" STREQUAL "") - if("${CMAKE_MATCH_1}" MATCHES "(([0-9])\\.([0-9]))[\\.0-9]*") - set(_matlab_version_tmp "${CMAKE_MATCH_1}") + + if(versioninfo_string) + # parses "<version>9.2.0.538062</version>" + string(REGEX MATCH "<version>(.*)</version>" + version_reg_match + ${versioninfo_string} + ) + + if(NOT "${version_reg_match}" STREQUAL "") + if("${CMAKE_MATCH_1}" MATCHES "(([0-9])\\.([0-9]))[\\.0-9]*") + set(_matlab_version_tmp "${CMAKE_MATCH_1}") + endif() endif() endif() set(${matlab_final_version} "${_matlab_version_tmp}" PARENT_SCOPE) @@ -1185,8 +1188,7 @@ function(_Matlab_get_version_from_root matlab_root matlab_or_mcr matlab_known_ve "${_matlab_version_tmp}" CACHE INTERNAL "Matlab (MCR) version (automatically determined)" FORCE) - - endif() # Matlab or MCR + endif() # Matlab or MCR endfunction() |