Added Windows functionality to FindMatlab. Untested

pull/1384/head
Hilton Bristow 12 years ago committed by hbristow
parent e8e537a1c7
commit 60d7acb4fc
  1. 58
      cmake/OpenCVFindMatlab.cmake

@ -36,6 +36,9 @@ MACRO(locate_matlab_root)
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()
@ -47,12 +50,30 @@ MACRO(locate_matlab_root)
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_)
@ -67,30 +88,31 @@ endMACRO()
# (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)

Loading…
Cancel
Save