foreach (DIR_ ${SEARCH_DIRS_})
file(GLOB MATLAB_ROOT_DIR ${DIR_}/*matlab*)
if (MATLAB_ROOT_DIR)
+ list(SORT MATLAB_ROOT_DIR)
+ list(REVERSE MATLAB_ROOT_DIR)
+ list(GET MATLAB_ROOT_DIR 0 MATLAB_ROOT_DIR)
break()
endif()
endforeach()
foreach (DIR_ ${SEARCH_DIRS_})
file(GLOB MATLAB_ROOT_DIR ${DIR_}/*matlab*)
if (MATLAB_ROOT_DIR)
+ list(SORT MATLAB_ROOT_DIR)
+ list(REVERSE MATLAB_ROOT_DIR)
+ list(GET MATLAB_ROOT_DIR 0 MATLAB_ROOT_DIR)
break()
endif()
endforeach()
# --- WINDOWS ---
elseif (WIN32)
+ # query the registry
+ set(REG_ROOTS_ "HKEY_LOCAL_MACHINE" "HKEY_CURRENT_USER")
+ foreach(REG_ROOT_ REG_ROOTS_)
+ execute_process(COMMAND reg query ${REG_ROOT_}\\SOFTWARE\\MathWorks\\MATLAB /f * /k OUTPUT_VARIABLE VERSIONS_)
+ if (VERSIONS_)
+ # sort in order from highest to lowest
+ list(SORT VERSIONS_)
+ list(REVERSE VERSIONS_)
+ list(GET VERSIONS_ 0 VERSION_)
+ get_filename_component(MATLAB_ROOT_DIR [${REG_ROOT_}\\SOFTWARE\\MathWorks\\MATLAB\\${VERSION_};Install_Dir] ABSOLUTE PATH)
+ if (MATLAB_ROOT_DIR)
+ break()
+ endif()
+ endif()
+ endforeach()
endif()
# unset local variables
unset(SEARCH_DIRS_)
# (include directory and libraries) under the root. If everything is found,
# sets the variable MATLAB_FOUND to TRUE
MACRO(locate_matlab_components MATLAB_ROOT_DIR)
+ # get the mex extension
if (UNIX)
- # get the mex extension
execute_process(COMMAND ${MATLAB_ROOT_DIR}/bin/mexext OUTPUT_VARIABLE MATLAB_MEXEXT)
- string(STRIP ${MATLAB_MEXEXT} MATLAB_MEXEXT)
- string(REPLACE "mex" "" MATLAB_ARCH ${MATLAB_MEXEXT})
-
- # get the path to the libraries
- set(MATLAB_LIBRARY_DIRS ${MATLAB_ROOT_DIR}/bin/${MATLAB_ARCH})
+ elseif (WIN32)
+ execute_process(COMMAND ${MATLAB_ROOT_DIR}/bin/mexext.bat OUTPUT_VARIABLE MATLAB_MEXEXT)
+ endif()
+
+ string(STRIP ${MATLAB_MEXEXT} MATLAB_MEXEXT)
+ string(REPLACE "mex" "" MATLAB_ARCH ${MATLAB_MEXEXT})
- # get the libraries
- find_library(MATLAB_LIB_MX mx PATHS ${MATLAB_LIBRARY_DIRS} NO_DEFAULT_PATH)
- find_library(MATLAB_LIB_MEX mex PATHS ${MATLAB_LIBRARY_DIRS} NO_DEFAULT_PATH)
- find_library(MATLAB_LIB_MAT mat PATHS ${MATLAB_LIBRARY_DIRS} NO_DEFAULT_PATH)
- set(MATLAB_LIBS ${MATLAB_LIB_MX} ${MATLAB_LIB_MEX} ${MATLAB_LIB_MAT})
+ # get the path to the libraries
+ set(MATLAB_LIBRARY_DIRS ${MATLAB_ROOT_DIR}/bin/${MATLAB_ARCH})
- # get the include path
- find_path(MATLAB_INCLUDE_DIRS mex.h ${MATLAB_ROOT_DIR}/extern/include)
+ # get the libraries
+ find_library(MATLAB_LIB_MX mx PATHS ${MATLAB_LIBRARY_DIRS} NO_DEFAULT_PATH)
+ find_library(MATLAB_LIB_MEX mex PATHS ${MATLAB_LIBRARY_DIRS} NO_DEFAULT_PATH)
+ find_library(MATLAB_LIB_MAT mat PATHS ${MATLAB_LIBRARY_DIRS} NO_DEFAULT_PATH)
+ set(MATLAB_LIBS ${MATLAB_LIB_MX} ${MATLAB_LIB_MEX} ${MATLAB_LIB_MAT})
- # get the mex shell script
- find_file(MATLAB_MEX_SCRIPT NAMES mex mex.bat PATHS ${MATLAB_ROOT_DIR}/bin NO_DEFAULT_PATH)
-
- elseif (WIN32)
- endif()
+ # get the include path
+ find_path(MATLAB_INCLUDE_DIRS mex.h ${MATLAB_ROOT_DIR}/extern/include)
+ # get the mex shell script
+ find_file(MATLAB_MEX_SCRIPT NAMES mex mex.bat PATHS ${MATLAB_ROOT_DIR}/bin NO_DEFAULT_PATH)
+
# verify that everything has been found successfully
if (MATLAB_LIB_MX AND MATLAB_LIB_MEX AND MATLAB_LIB_MAT AND MATLAB_INCLUDE_DIRS AND MATLAB_MEX_SCRIPT)
set(MATLAB_FOUND TRUE)