Attachment 'FindOpenCV.cmake'
Download 1 # - Try to find OpenCV library installation
2 # See http://sourceforge.net/projects/opencvlibrary/
3 #
4 # The follwoing variables are optionally searched for defaults
5 # OpenCV_ROOT_DIR: Base directory of OpenCv tree to use.
6 # OpenCV_FIND_REQUIRED_COMPONENTS : FIND_PACKAGE(OpenCV COMPONENTS ..)
7 # compatible interface. typically CV CXCORE CVAUX HIGHGUI CVCAM .. etc.
8 #
9 # The following are set after configuration is done:
10 # OpenCV_FOUND
11 # OpenCV_INCLUDE_DIR
12 # OpenCV_LIBRARIES
13 # OpenCV_LINK_DIRECTORIES
14 #
15 # deprecated:
16 # OPENCV_* uppercase replaced by case sensitive OpenCV_*
17 # OPENCV_EXE_LINKER_FLAGS
18 # OPENCV_INCLUDE_DIR : replaced by plural *_DIRS
19 #
20 # 2004/05 Jan Woetzel, Friso, Daniel Grest
21 # 2006/01 complete rewrite by Jan Woetzel
22 # 1006/09 2nd rewrite introducing ROOT_DIR and PATH_SUFFIXES
23 # to handle multiple installed versions gracefully by Jan Woetzel
24 #
25 # tested with:
26 # -OpenCV 0.97 (beta5a): MSVS 7.1, gcc 3.3, gcc 4.1
27 # -OpenCV 0.99 (1.0rc1): MSVS 7.1
28 #
29 # www.mip.informatik.uni-kiel.de/~jw
30 # --------------------------------
31
32
33 MACRO(DBG_MSG _MSG)
34 # MESSAGE(STATUS "${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}):\n${_MSG}")
35 ENDMACRO(DBG_MSG)
36
37
38
39 # required cv components with header and library if COMPONENTS unspecified
40 IF (NOT OpenCV_FIND_COMPONENTS)
41 # default
42 SET(OpenCV_FIND_REQUIRED_COMPONENTS CV CXCORE CVAUX HIGHGUI )
43 IF (WIN32)
44 LIST(APPEND OpenCV_FIND_REQUIRED_COMPONENTS CVCAM ) # WIN32 only actually
45 ENDIF(WIN32)
46 ENDIF (NOT OpenCV_FIND_COMPONENTS)
47
48
49 # typical root dirs of installations, exactly one of them is used
50 SET (OpenCV_POSSIBLE_ROOT_DIRS
51 "${OpenCV_ROOT_DIR}"
52 "$ENV{OpenCV_ROOT_DIR}"
53 "$ENV{OPENCV_DIR}" # only for backward compatibility deprecated by ROOT_DIR
54 "$ENV{OPENCV_HOME}" # only for backward compatibility
55 "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Intel(R) Open Source Computer Vision Library_is1;Inno Setup: App Path]"
56 "$ENV{ProgramFiles}/OpenCV"
57 /usr/local
58 /usr
59 )
60
61
62 # MIP Uni Kiel /opt/net network installation
63 # get correct prefix for current gcc compiler version for gcc 3.x 4.x
64 IF (${CMAKE_COMPILER_IS_GNUCXX})
65 IF (NOT OpenCV_FIND_QUIETLY)
66 MESSAGE(STATUS "Checking GNUCXX version 3/4 to determine OpenCV /opt/net/ path")
67 ENDIF (NOT OpenCV_FIND_QUIETLY)
68 EXEC_PROGRAM(${CMAKE_CXX_COMPILER} ARGS --version OUTPUT_VARIABLE CXX_COMPILER_VERSION)
69 IF (CXX_COMPILER_VERSION MATCHES ".*3\\.[0-9].*")
70 SET(IS_GNUCXX3 TRUE)
71 LIST(APPEND OpenCV_POSSIBLE_ROOT_DIRS /opt/net/gcc33/OpenCV )
72 ENDIF(CXX_COMPILER_VERSION MATCHES ".*3\\.[0-9].*")
73 IF (CXX_COMPILER_VERSION MATCHES ".*4\\.[0-9].*")
74 SET(IS_GNUCXX4 TRUE)
75 LIST(APPEND OpenCV_POSSIBLE_ROOT_DIRS /opt/net/gcc41/OpenCV )
76 ENDIF(CXX_COMPILER_VERSION MATCHES ".*4\\.[0-9].*")
77 ENDIF (${CMAKE_COMPILER_IS_GNUCXX})
78
79 #DBG_MSG("DBG (OpenCV_POSSIBLE_ROOT_DIRS=${OpenCV_POSSIBLE_ROOT_DIRS}")
80
81 #
82 # select exactly ONE OpenCV base directory/tree
83 # to avoid mixing different version headers and libs
84 #
85 FIND_PATH(OpenCV_ROOT_DIR
86 NAMES
87 cv/include/cv.h # windows
88 include/opencv/cv.h # linux /opt/net
89 include/cv/cv.h
90 include/cv.h
91 PATHS ${OpenCV_POSSIBLE_ROOT_DIRS})
92 DBG_MSG("OpenCV_ROOT_DIR=${OpenCV_ROOT_DIR}")
93
94
95 # header include dir suffixes appended to OpenCV_ROOT_DIR
96 SET(OpenCV_INCDIR_SUFFIXES
97 include
98 include/cv
99 include/opencv
100 cv/include
101 cxcore/include
102 cvaux/include
103 otherlibs/cvcam/include
104 otherlibs/highgui
105 otherlibs/highgui/include
106 otherlibs/_graphics/include
107 )
108
109 # library linkdir suffixes appended to OpenCV_ROOT_DIR
110 SET(OpenCV_LIBDIR_SUFFIXES
111 lib
112 OpenCV/lib
113 otherlibs/_graphics/lib
114 )
115 #DBG_MSG("OpenCV_LIBDIR_SUFFIXES=${OpenCV_LIBDIR_SUFFIXES}")
116
117
118 #
119 # find incdir for each lib
120 #
121 FIND_PATH(OpenCV_CV_INCLUDE_DIR
122 NAMES cv.h
123 PATHS ${OpenCV_ROOT_DIR}
124 PATH_SUFFIXES ${OpenCV_INCDIR_SUFFIXES} )
125 FIND_PATH(OpenCV_CXCORE_INCLUDE_DIR
126 NAMES cxcore.h
127 PATHS ${OpenCV_ROOT_DIR}
128 PATH_SUFFIXES ${OpenCV_INCDIR_SUFFIXES} )
129 FIND_PATH(OpenCV_CVAUX_INCLUDE_DIR
130 NAMES cvaux.h
131 PATHS ${OpenCV_ROOT_DIR}
132 PATH_SUFFIXES ${OpenCV_INCDIR_SUFFIXES} )
133 FIND_PATH(OpenCV_HIGHGUI_INCLUDE_DIR
134 NAMES highgui.h
135 PATHS ${OpenCV_ROOT_DIR}
136 PATH_SUFFIXES ${OpenCV_INCDIR_SUFFIXES} )
137 FIND_PATH(OpenCV_CVCAM_INCLUDE_DIR
138 NAMES cvcam.h
139 PATHS ${OpenCV_ROOT_DIR}
140 PATH_SUFFIXES ${OpenCV_INCDIR_SUFFIXES} )
141
142 #
143 # find sbsolute path to all libraries
144 # some are optionally, some may not exist on Linux
145 #
146 FIND_LIBRARY(OpenCV_CV_LIBRARY
147 NAMES cv opencv
148 PATHS ${OpenCV_ROOT_DIR}
149 PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} )
150 FIND_LIBRARY(OpenCV_CVAUX_LIBRARY
151 NAMES cvaux
152 PATHS ${OpenCV_ROOT_DIR} PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} )
153 FIND_LIBRARY(OpenCV_CVCAM_LIBRARY
154 NAMES cvcam
155 PATHS ${OpenCV_ROOT_DIR} PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} )
156 FIND_LIBRARY(OpenCV_CVHAARTRAINING_LIBRARY
157 NAMES cvhaartraining
158 PATHS ${OpenCV_ROOT_DIR} PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} )
159 FIND_LIBRARY(OpenCV_CXCORE_LIBRARY
160 NAMES cxcore
161 PATHS ${OpenCV_ROOT_DIR} PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} )
162 FIND_LIBRARY(OpenCV_CXTS_LIBRARY
163 NAMES cxts
164 PATHS ${OpenCV_ROOT_DIR} PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} )
165 FIND_LIBRARY(OpenCV_HIGHGUI_LIBRARY
166 NAMES highgui
167 PATHS ${OpenCV_ROOT_DIR} PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} )
168 FIND_LIBRARY(OpenCV_ML_LIBRARY
169 NAMES ml
170 PATHS ${OpenCV_ROOT_DIR} PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} )
171 FIND_LIBRARY(OpenCV_TRS_LIBRARY
172 NAMES trs
173 PATHS ${OpenCV_ROOT_DIR} PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} )
174
175
176
177 #
178 # Logic selecting required libs and headers
179 #
180 SET(OpenCV_FOUND ON)
181 DBG_MSG("OpenCV_FIND_REQUIRED_COMPONENTS=${OpenCV_FIND_REQUIRED_COMPONENTS}")
182 FOREACH(NAME ${OpenCV_FIND_REQUIRED_COMPONENTS} )
183
184 # only good if header and library both found
185 IF (OpenCV_${NAME}_INCLUDE_DIR AND OpenCV_${NAME}_LIBRARY)
186 LIST(APPEND OpenCV_INCLUDE_DIRS ${OpenCV_${NAME}_INCLUDE_DIR} )
187 LIST(APPEND OpenCV_LIBRARIES ${OpenCV_${NAME}_LIBRARY} )
188 #DBG_MSG("appending for NAME=${NAME} ${OpenCV_${NAME}_INCLUDE_DIR} and ${OpenCV_${NAME}_LIBRARY}" )
189 ELSE (OpenCV_${NAME}_INCLUDE_DIR AND OpenCV_${NAME}_LIBRARY)
190 DBG_MSG("OpenCV component NAME=${NAME} not found! "
191 "\nOpenCV_${NAME}_INCLUDE_DIR=${OpenCV_${NAME}_INCLUDE_DIR} "
192 "\nOpenCV_${NAME}_LIBRARY=${OpenCV_${NAME}_LIBRARY} ")
193 SET(OpenCV_FOUND OFF)
194 ENDIF (OpenCV_${NAME}_INCLUDE_DIR AND OpenCV_${NAME}_LIBRARY)
195
196 ENDFOREACH(NAME)
197
198 DBG_MSG("OpenCV_INCLUDE_DIRS=${OpenCV_INCLUDE_DIRS}")
199 DBG_MSG("OpenCV_LIBRARIES=${OpenCV_LIBRARIES}")
200
201 # get the link directory for rpath to be used with LINK_DIRECTORIES:
202 IF (OpenCV_CV_LIBRARY)
203 GET_FILENAME_COMPONENT(OpenCV_LINK_DIRECTORIES ${OpenCV_CV_LIBRARY} PATH)
204 ENDIF (OpenCV_CV_LIBRARY)
205
206 MARK_AS_ADVANCED(
207 OpenCV_ROOT_DIR
208 OpenCV_INCLUDE_DIRS
209 OpenCV_CV_INCLUDE_DIR
210 OpenCV_CXCORE_INCLUDE_DIR
211 OpenCV_CVAUX_INCLUDE_DIR
212 OpenCV_CVCAM_INCLUDE_DIR
213 OpenCV_HIGHGUI_INCLUDE_DIR
214 OpenCV_LIBRARIES
215 OpenCV_CV_LIBRARY
216 OpenCV_CXCORE_LIBRARY
217 OpenCV_CVAUX_LIBRARY
218 OpenCV_CVCAM_LIBRARY
219 OpenCV_CVHAARTRAINING_LIBRARY
220 OpenCV_CXTS_LIBRARY
221 OpenCV_HIGHGUI_LIBRARY
222 OpenCV_ML_LIBRARY
223 OpenCV_TRS_LIBRARY
224 )
225
226
227 # be backward compatible:
228 SET(OPENCV_LIBRARIES ${OpenCV_LIBRARIES} )
229 SET(OPENCV_INCLUDE_DIR ${OpenCV_INCLUDE_DIRS} )
230 SET(OPENCV_FOUND ${OpenCV_FOUND})
231
232
233
234 # display help message
235 IF(NOT OpenCV_FOUND)
236 # make FIND_PACKAGE friendly
237 IF(NOT OpenCV_FIND_QUIETLY)
238 IF(OpenCV_FIND_REQUIRED)
239 MESSAGE(FATAL_ERROR
240 "OpenCV required but some headers or libs not found. Please specify it's location with OpenCV_ROOT_DIR env. variable.")
241 ELSE(OpenCV_FIND_REQUIRED)
242 MESSAGE(STATUS
243 "ERROR: OpenCV was not found.")
244 ENDIF(OpenCV_FIND_REQUIRED)
245 ENDIF(NOT OpenCV_FIND_QUIETLY)
246 ENDIF(NOT OpenCV_FOUND)
Attached Files
To refer to attachments on a page, use attachment:filename, as shown below in the list of files. Do NOT use the URL of the [get] link, since this is subject to change and can break easily.You are not allowed to attach a file to this page.