FindMatlab: incorrect path for MCR
With an MCR installation, my find_package(Matlab) adds the version of the installation at the end of MATLAB_ROOT_DIR, resulting in this type of error:
-- [MATLAB] Extracting MATLAB versions with registry view args 'VIEW;TARGET'
[cmake] -- [MATLAB] Getting MATLAB roots with registry view args 'VIEW;TARGET'
[cmake] -- [MATLAB] Matlab root folders are MCR;9.13.0.2553342;C:/Program Files/MATLAB/MATLAB Runtime/R2022b/v913
[cmake] -- [MATLAB] Current version is 9.13.0.2553342 located C:/Program Files/MATLAB/MATLAB Runtime/R2022b/v913
[cmake] -- [MATLAB] Determining mex files extensions from 'C:/Program Files/MATLAB/MATLAB Runtime/R2022b/v913/bin' with program 'Matlab_MEXEXTENSIONS_PROG-NOTFOUND'
[cmake] CMake Warning at C:/Program Files/CMake/share/cmake-3.30/Modules/FindMatlab.cmake:686 (message):
[cmake] [MATLAB] Cannot found mexext program. Matlab root is C:/Program
[cmake] Files/MATLAB/MATLAB Runtime/R2022b/v913
[cmake] Call Stack (most recent call first):
[cmake] C:/Program Files/CMake/share/cmake-3.30/Modules/FindMatlab.cmake:1750 (matlab_get_mex_suffix)
[cmake] CMakeLists.txt:61 (find_package)
[cmake]
[cmake]
[cmake] -- [MATLAB] _matlab_lib_prefix_for_search = lib | _matlab_lib_dir_for_search = C:/Program Files/MATLAB/MATLAB Runtime/R2022b/v913/extern/lib/win64/microsoft
[cmake] -- Could NOT find Matlab (missing: Matlab_INCLUDE_DIRS) (found version "9.13.0.2553342")
My Matlab MCR installation is at C:/Program Files/MATLAB/MATLAB Runtime/R2022b, not C:/Program Files/MATLAB/MATLAB Runtime/R2022b/v913. I found the line in findMatlab.cmake that adds the version to the MATLAB_ROOT_DIR.
# remove the dot
string(REPLACE "." "" _matlab_current_version_without_dot "${_matlab_current_version}")
Unfortunately, deleting this line causes a different error :
[cmake] -- [MATLAB] Extracting MATLAB versions with registry view args 'VIEW;TARGET'
[cmake] -- [MATLAB] Getting MATLAB roots with registry view args 'VIEW;TARGET'
[cmake] -- [MATLAB] Matlab root folders are MCR;9.13.0.2553342;C:/Program Files/MATLAB/MATLAB Runtime/R2022b
[cmake] -- [MATLAB] Current version is 9.13.0.2553342 located C:/Program Files/MATLAB/MATLAB Runtime/R2022b
[cmake] CMake Warning at C:/Program Files/CMake/share/cmake-3.30/Modules/FindMatlab.cmake:686 (message):
[cmake] [MATLAB] Cannot found mexext program. Matlab root is C:/Program
[cmake] Files/MATLAB/MATLAB Runtime/R2022b
[cmake] Call Stack (most recent call first):
[cmake] C:/Program Files/CMake/share/cmake-3.30/Modules/FindMatlab.cmake:1750 (matlab_get_mex_suffix)
[cmake] CMakeLists.txt:61 (find_package)
[cmake]
[cmake]
[cmake] -- [MATLAB] Determining mex files extensions from 'C:/Program Files/MATLAB/MATLAB Runtime/R2022b/bin' with program 'Matlab_MEXEXTENSIONS_PROG-NOTFOUND'
[cmake] -- [MATLAB] _matlab_lib_prefix_for_search = lib | _matlab_lib_dir_for_search = C:/Program Files/MATLAB/MATLAB Runtime/R2022b/extern/lib/win64/microsoft
[cmake] -- Could NOT find Matlab (missing: Matlab_INCLUDE_DIRS) (found version "9.13.0.2553342")