1 ###########################################################
3 # See http://sourceforge.net/projects/opencvlibrary/
4 #----------------------------------------------------------
7 # The following variables are optionally searched for defaults
8 # OpenCV_DIR: Base directory of OpenCv tree to use.
11 # The following are set after configuration is done:
16 # OpenCV_VERSION (OpenCV_VERSION_MAJOR, OpenCV_VERSION_MINOR, OpenCV_VERSION_PATCH)
19 # Deprecated variable are used to maintain backward compatibility with
20 # the script of Jan Woetzel (2006/09): www.mip.informatik.uni-kiel.de/~jw
23 # OpenCV_LINK_DIRECTORIES
27 # 2010/04/07 Benoit Rat, Correct a bug when OpenCVConfig.cmake is not found.
28 # 2010/03/24 Benoit Rat, Add compatibility for when OpenCVConfig.cmake is not found.
29 # 2010/03/22 Benoit Rat, Creation of the script.
33 # - OpenCV 2.1: MinGW, MSVC2008
34 # - OpenCV 2.0: MinGW, MSVC2008, GCC4
39 # LGPL 2.1 : GNU Lesser General Public License Usage
40 # Alternatively, this file may be used under the terms of the GNU Lesser
42 # General Public License version 2.1 as published by the Free Software
43 # Foundation and appearing in the file LICENSE.LGPL included in the
44 # packaging of this file. Please review the following information to
45 # ensure the GNU Lesser General Public License version 2.1 requirements
46 # will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
48 #----------------------------------------------------------
51 find_path(OpenCV_DIR "OpenCVConfig.cmake" DOC "Root directory of OpenCV")
53 ##====================================================
54 ## Find OpenCV libraries
55 ##----------------------------------------------------
56 if(EXISTS "${OpenCV_DIR}")
58 #When its possible to use the Config script use it.
59 if(EXISTS "${OpenCV_DIR}/OpenCVConfig.cmake")
61 ## Include the standard CMake script
62 include("${OpenCV_DIR}/OpenCVConfig.cmake")
64 ## Search for a specific version
65 set(CVLIB_SUFFIX "${OpenCV_VERSION_MAJOR}${OpenCV_VERSION_MINOR}${OpenCV_VERSION_PATCH}")
67 #Otherwise it try to guess it.
68 else(EXISTS "${OpenCV_DIR}/OpenCVConfig.cmake")
70 set(OPENCV_LIB_COMPONENTS cxcore cv ml highgui cvaux)
71 find_path(OpenCV_INCLUDE_DIR "cv.h" PATHS "${OpenCV_DIR}" PATH_SUFFIXES "include" "include/opencv" DOC "")
72 if(EXISTS ${OpenCV_INCLUDE_DIR})
73 include_directories(${OpenCV_INCLUDE_DIR})
74 endif(EXISTS ${OpenCV_INCLUDE_DIR})
76 #Find OpenCV version by looking at cvver.h
77 file(STRINGS ${OpenCV_INCLUDE_DIR}/cvver.h OpenCV_VERSIONS_TMP REGEX "^#define CV_[A-Z]+_VERSION[ \t]+[0-9]+$")
78 string(REGEX REPLACE ".*#define CV_MAJOR_VERSION[ \t]+([0-9]+).*" "\\1" OpenCV_VERSION_MAJOR ${OpenCV_VERSIONS_TMP})
79 string(REGEX REPLACE ".*#define CV_MINOR_VERSION[ \t]+([0-9]+).*" "\\1" OpenCV_VERSION_MINOR ${OpenCV_VERSIONS_TMP})
80 string(REGEX REPLACE ".*#define CV_SUBMINOR_VERSION[ \t]+([0-9]+).*" "\\1" OpenCV_VERSION_PATCH ${OpenCV_VERSIONS_TMP})
81 set(OpenCV_VERSION ${OpenCV_VERSION_MAJOR}.${OpenCV_VERSION_MINOR}.${OpenCV_VERSION_PATCH} CACHE STRING "" FORCE)
82 set(CVLIB_SUFFIX "${OpenCV_VERSION_MAJOR}${OpenCV_VERSION_MINOR}${OpenCV_VERSION_PATCH}")
84 endif(EXISTS "${OpenCV_DIR}/OpenCVConfig.cmake")
89 ## Initiate the variable before the loop
90 set(GLOBAL OpenCV_LIBS "")
91 set(OpenCV_FOUND_TMP true)
93 ## Loop over each components
94 foreach(__CVLIB ${OPENCV_LIB_COMPONENTS})
96 find_library(OpenCV_${__CVLIB}_LIBRARY_DEBUG NAMES "${__CVLIB}${CVLIB_SUFFIX}d" "lib${__CVLIB}${CVLIB_SUFFIX}d" PATHS "${OpenCV_DIR}/lib" NO_DEFAULT_PATH)
97 find_library(OpenCV_${__CVLIB}_LIBRARY_RELEASE NAMES "${__CVLIB}${CVLIB_SUFFIX}" "lib${__CVLIB}${CVLIB_SUFFIX}" PATHS "${OpenCV_DIR}/lib" NO_DEFAULT_PATH)
99 #Remove the cache value
100 set(OpenCV_${__CVLIB}_LIBRARY "" CACHE STRING "" FORCE)
103 if(OpenCV_${__CVLIB}_LIBRARY_DEBUG AND OpenCV_${__CVLIB}_LIBRARY_RELEASE)
104 set(OpenCV_${__CVLIB}_LIBRARY debug ${OpenCV_${__CVLIB}_LIBRARY_DEBUG} optimized ${OpenCV_${__CVLIB}_LIBRARY_RELEASE} CACHE STRING "" FORCE)
106 elseif(OpenCV_${__CVLIB}_LIBRARY_DEBUG)
107 set(OpenCV_${__CVLIB}_LIBRARY ${OpenCV_${__CVLIB}_LIBRARY_DEBUG} CACHE STRING "" FORCE)
109 elseif(OpenCV_${__CVLIB}_LIBRARY_RELEASE)
110 set(OpenCV_${__CVLIB}_LIBRARY ${OpenCV_${__CVLIB}_LIBRARY_RELEASE} CACHE STRING "" FORCE)
113 set(OpenCV_FOUND_TMP false)
116 #Add to the general list
117 if(OpenCV_${__CVLIB}_LIBRARY)
118 set(OpenCV_LIBS ${OpenCV_LIBS} ${OpenCV_${__CVLIB}_LIBRARY})
119 endif(OpenCV_${__CVLIB}_LIBRARY)
124 set(OpenCV_FOUND ${OpenCV_FOUND_TMP} CACHE BOOL "" FORCE)
127 else(EXISTS "${OpenCV_DIR}")
128 set(ERR_MSG "Please specify OpenCV directory using OpenCV_DIR env. variable")
129 endif(EXISTS "${OpenCV_DIR}")
130 ##====================================================
133 ##====================================================
135 ##----------------------------------------------------
137 # make FIND_PACKAGE friendly
138 if(NOT OpenCV_FIND_QUIETLY)
139 if(OpenCV_FIND_REQUIRED)
140 message(FATAL_ERROR "OpenCV required but some headers or libs not found. ${ERR_MSG}")
141 else(OpenCV_FIND_REQUIRED)
142 message(STATUS "WARNING: OpenCV was not found. ${ERR_MSG}")
143 endif(OpenCV_FIND_REQUIRED)
144 endif(NOT OpenCV_FIND_QUIETLY)
145 endif(NOT OpenCV_FOUND)
146 ##====================================================
149 ##====================================================
150 ## Backward compatibility
151 ##----------------------------------------------------
153 option(OpenCV_BACKWARD_COMPA "Add some variable to make this script compatible with the other version of FindOpenCV.cmake" false)
154 if(OpenCV_BACKWARD_COMPA)
155 find_path(OpenCV_INCLUDE_DIRS "cv.h" PATHS "${OpenCV_DIR}" PATH_SUFFIXES "include" "include/opencv" DOC "Include directory")
156 find_path(OpenCV_INCLUDE_DIR "cv.h" PATHS "${OpenCV_DIR}" PATH_SUFFIXES "include" "include/opencv" DOC "Include directory")
157 set(OpenCV_LIBRARIES "${OpenCV_LIBS}" CACHE STRING "" FORCE)
158 endif(OpenCV_BACKWARD_COMPA)
160 ##====================================================