Squashed 'cmake/' content from commit 2d25566
git-subtree-dir: cmake git-subtree-split: 2d25566a1c5162ce3fd6bfc268d5665de182af89
This commit is contained in:
233
FindOpenCV.cmake
Normal file
233
FindOpenCV.cmake
Normal file
@@ -0,0 +1,233 @@
|
||||
# - Try to find OpenCV library installation
|
||||
# See http://sourceforge.net/projects/opencvlibrary/
|
||||
#
|
||||
# The following variable is optionally searched for defaults
|
||||
# OPENCV_ROOT_DIR: Base directory of OpenCv tree to use.
|
||||
#
|
||||
# OPENCV_NEW_LIBRARY_NAMES Set to YES before searching if you want to
|
||||
# The following are set after configuration is done:
|
||||
# OPENCV_FOUND
|
||||
# OPENCV_INCLUDE_DIRS
|
||||
# OPENCV_LIBRARIES
|
||||
#
|
||||
# 2004/05 Jan Woetzel, Friso, Daniel Grest
|
||||
# 2006/01 complete rewrite by Jan Woetzel
|
||||
# 2006/09 2nd rewrite introducing ROOT_DIR and PATH_SUFFIXES
|
||||
# to handle multiple installed versions gracefully by Jan Woetzel
|
||||
# 2010/02 Ryan Pavlik (Iowa State University) - partial rewrite to standardize
|
||||
#
|
||||
# tested with:
|
||||
# -OpenCV 0.97 (beta5a): MSVS 7.1, gcc 3.3, gcc 4.1
|
||||
# -OpenCV 0.99 (1.0rc1): MSVS 7.1
|
||||
#
|
||||
# www.mip.informatik.uni-kiel.de/~jw
|
||||
# academic.cleardefinition.com
|
||||
# --------------------------------
|
||||
|
||||
set(OPENCV_ROOT_DIR
|
||||
"${OPENCV_ROOT_DIR}"
|
||||
CACHE
|
||||
PATH
|
||||
"Path to search for OpenCV")
|
||||
|
||||
include(ProgramFilesGlob)
|
||||
|
||||
# typical root dirs of installations, exactly one of them is used
|
||||
program_files_glob(_dirs "/OpenCV*/")
|
||||
|
||||
#
|
||||
# select exactly ONE OPENCV base directory/tree
|
||||
# to avoid mixing different version headers and libs
|
||||
#
|
||||
find_path(OPENCV_BASE_DIR
|
||||
NAMES
|
||||
cv/include/cv.h
|
||||
include/opencv/cv.h
|
||||
include/cv/cv.h
|
||||
include/cv.h
|
||||
HINTS
|
||||
"${OPENCV_ROOT_DIR}"
|
||||
"$ENV{OPENCV_ROOT_DIR}"
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Intel(R) Open Source Computer Vision Library_is1;Inno Setup: App Path]"
|
||||
${_dirs})
|
||||
|
||||
|
||||
|
||||
|
||||
# header include dir suffixes appended to OPENCV_BASE_DIR
|
||||
set(OPENCV_INCDIR_SUFFIXES
|
||||
include
|
||||
include/cv
|
||||
include/opencv
|
||||
cv/include
|
||||
cxcore/include
|
||||
cvaux/include
|
||||
otherlibs/cvcam/include
|
||||
otherlibs/highgui
|
||||
otherlibs/highgui/include
|
||||
otherlibs/_graphics/include)
|
||||
|
||||
# library linkdir suffixes appended to OPENCV_BASE_DIR
|
||||
set(OPENCV_LIBDIR_SUFFIXES lib lib64 OpenCV/lib otherlibs/_graphics/lib)
|
||||
|
||||
|
||||
#
|
||||
# find incdir for each lib
|
||||
#
|
||||
find_path(OPENCV_cv_INCLUDE_DIR
|
||||
NAMES
|
||||
cv.h
|
||||
HINTS
|
||||
"${OPENCV_BASE_DIR}"
|
||||
"${OPENCV_ROOT_DIR}"
|
||||
PATH_SUFFIXES
|
||||
${OPENCV_INCDIR_SUFFIXES})
|
||||
find_path(OPENCV_cxcore_INCLUDE_DIR
|
||||
NAMES
|
||||
cxcore.h
|
||||
HINTS
|
||||
"${OPENCV_BASE_DIR}"
|
||||
"${OPENCV_ROOT_DIR}"
|
||||
PATH_SUFFIXES
|
||||
${OPENCV_INCDIR_SUFFIXES})
|
||||
find_path(OPENCV_cxcore_INCLUDE_DIR
|
||||
NAMES
|
||||
cvaux.h
|
||||
HINTS
|
||||
"${OPENCV_BASE_DIR}"
|
||||
"${OPENCV_ROOT_DIR}"
|
||||
PATH_SUFFIXES
|
||||
${OPENCV_INCDIR_SUFFIXES})
|
||||
find_path(OPENCV_highgui_INCLUDE_DIR
|
||||
NAMES
|
||||
highgui.h
|
||||
HINTS
|
||||
"${OPENCV_BASE_DIR}"
|
||||
"${OPENCV_ROOT_DIR}"
|
||||
PATH_SUFFIXES
|
||||
${OPENCV_INCDIR_SUFFIXES})
|
||||
find_path(OPENCV_cvcam_INCLUDE_DIR
|
||||
NAMES
|
||||
cvcam.h
|
||||
HINTS
|
||||
"${OPENCV_BASE_DIR}"
|
||||
"${OPENCV_ROOT_DIR}"
|
||||
PATH_SUFFIXES
|
||||
${OPENCV_INCDIR_SUFFIXES})
|
||||
|
||||
#
|
||||
# find sbsolute path to all libraries
|
||||
# some are optionally, some may not exist on Linux
|
||||
#
|
||||
find_library(OPENCV_legacy_LIBRARY
|
||||
NAMES
|
||||
opencv_legacy
|
||||
HINTS
|
||||
"${OPENCV_BASE_DIR}"
|
||||
"${OPENCV_ROOT_DIR}"
|
||||
PATH_SUFFIXES
|
||||
${OPENCV_LIBDIR_SUFFIXES})
|
||||
|
||||
set(OPENCV_NEW_COMPONENTS calib3d contrib core features2d highgui imgproc legacy ml objdetect video)
|
||||
set(OPENCV_OLD_COMPONENTS cv cvaux cvcam cvhaartraining cxcore cxts highgui ml trs)
|
||||
set(opencv_components)
|
||||
if(OPENCV_NEW_LIBRARY_NAMES OR OPENCV_legacy_LIBRARY)
|
||||
|
||||
# New-style library names
|
||||
foreach(component ${OPENCV_NEW_COMPONENTS})
|
||||
find_library(OPENCV_${component}_LIBRARY
|
||||
NAMES
|
||||
opencv_${component}
|
||||
HINTS
|
||||
${OPENCV_BASE_DIR}
|
||||
PATH_SUFFIXES
|
||||
${OPENCV_LIBDIR_SUFFIXES})
|
||||
endforeach()
|
||||
|
||||
# cv components with header and library if COMPONENTS unspecified
|
||||
if(NOT OpenCV_FIND_COMPONENTS)
|
||||
# default
|
||||
set(opencv_components core legacy imgproc highgui)
|
||||
if(WIN32)
|
||||
list(APPEND opencv_components video) # WIN32 only actually
|
||||
endif()
|
||||
else()
|
||||
# TODO: clean up/convert to new components
|
||||
string(TOLOWER "${OpenCV_FIND_COMPONENTS}" opencv_components)
|
||||
endif()
|
||||
|
||||
else()
|
||||
# Old-style lib names
|
||||
if(NOT OpenCV_FIND_COMPONENTS)
|
||||
# default
|
||||
set(opencv_components cv cxcore cvaux highgui)
|
||||
if(WIN32)
|
||||
list(APPEND opencv_components cvcam) # WIN32 only actually
|
||||
endif()
|
||||
else()
|
||||
string(TOLOWER "${OpenCV_FIND_COMPONENTS}" opencv_components)
|
||||
endif()
|
||||
|
||||
foreach(component ${OPENCV_OLD_COMPONENTS})
|
||||
find_library(OPENCV_${component}_LIBRARY
|
||||
NAMES
|
||||
cvaux
|
||||
HINTS
|
||||
${OPENCV_BASE_DIR}
|
||||
PATH_SUFFIXES
|
||||
${OPENCV_LIBDIR_SUFFIXES})
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
#
|
||||
# Logic selecting required libs and headers
|
||||
#
|
||||
|
||||
set(_req_check)
|
||||
set(_req_libs)
|
||||
set(_req_includes)
|
||||
foreach(component ${opencv_components})
|
||||
#message(STATUS "Component requested: ${component}")
|
||||
|
||||
# only good if header and library both found
|
||||
list(APPEND
|
||||
_req_check
|
||||
OPENCV_${component}_LIBRARY)
|
||||
list(APPEND _req_libs "${OPENCV_${component}_LIBRARY}")
|
||||
if(DEFINED OPENCV_${component}_INCLUDE_DIR)
|
||||
list(APPEND
|
||||
_req_check
|
||||
OPENCV_${component}_INCLUDE_DIR)
|
||||
list(APPEND _req_includes "${OPENCV_${component}_INCLUDE_DIR}")
|
||||
endif()
|
||||
|
||||
|
||||
endforeach()
|
||||
|
||||
# handle the QUIETLY and REQUIRED arguments and set xxx_FOUND to TRUE if
|
||||
# all listed variables are TRUE
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(OpenCV
|
||||
DEFAULT_MSG
|
||||
OPENCV_cv_INCLUDE_DIR
|
||||
${_req_check})
|
||||
|
||||
if(OPENCV_FOUND)
|
||||
set(OPENCV_LIBRARY_DIRS)
|
||||
foreach(lib ${_req_libs})
|
||||
get_filename_component(dir "${lib}" PATH)
|
||||
list(APPEND OPENCV_LIBRARY_DIRS "${dir}")
|
||||
endforeach()
|
||||
list(REVERSE OPENCV_LIBRARY_DIRS)
|
||||
list(REMOVE_DUPLICATES OPENCV_LIBRARY_DIRS)
|
||||
list(REVERSE OPENCV_LIBRARY_DIRS)
|
||||
|
||||
set(OPENCV_INCLUDE_DIRS ${_req_includes})
|
||||
set(OPENCV_LIBRARIES ${_req_libs})
|
||||
mark_as_advanced(OPENCV_ROOT_DIR)
|
||||
endif()
|
||||
|
||||
mark_as_advanced(OPENCV_BASE_DIR)
|
||||
foreach(component ${OPENCV_NEW_COMPONENTS} ${OPENCV_OLD_COMPONENTS})
|
||||
mark_as_advanced(OPENCV_${component}_LIBRARY OPENCV_${component}_INCLUDE_DIR)
|
||||
endforeach()
|
||||
Reference in New Issue
Block a user