247 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			CMake
		
	
	
		
		
			
		
	
	
			247 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			CMake
		
	
	
|  | # - Try to find OpenCV library installation
 | ||
|  | # See http://sourceforge.net/projects/opencvlibrary/
 | ||
|  | #
 | ||
|  | # The follwoing variables are optionally searched for defaults
 | ||
|  | #  OpenCV_ROOT_DIR:            Base directory of OpenCv tree to use.
 | ||
|  | #  OpenCV_FIND_REQUIRED_COMPONENTS : FIND_PACKAGE(OpenCV COMPONENTS ..) 
 | ||
|  | #    compatible interface. typically  CV CXCORE CVAUX HIGHGUI CVCAM .. etc.
 | ||
|  | #
 | ||
|  | # The following are set after configuration is done: 
 | ||
|  | #  OpenCV_FOUND
 | ||
|  | #  OpenCV_INCLUDE_DIR
 | ||
|  | #  OpenCV_LIBRARIES
 | ||
|  | #  OpenCV_LINK_DIRECTORIES
 | ||
|  | #
 | ||
|  | # deprecated:
 | ||
|  | #  OPENCV_* uppercase replaced by case sensitive OpenCV_*
 | ||
|  | #  OPENCV_EXE_LINKER_FLAGS
 | ||
|  | #  OPENCV_INCLUDE_DIR : replaced by plural *_DIRS
 | ||
|  | # 
 | ||
|  | # 2004/05 Jan Woetzel, Friso, Daniel Grest 
 | ||
|  | # 2006/01 complete rewrite by Jan Woetzel
 | ||
|  | # 1006/09 2nd rewrite introducing ROOT_DIR and PATH_SUFFIXES 
 | ||
|  | #   to handle multiple installed versions gracefully by Jan Woetzel
 | ||
|  | #
 | ||
|  | # 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
 | ||
|  | # --------------------------------
 | ||
|  | 
 | ||
|  | 
 | ||
|  | MACRO(DBG_MSG _MSG)
 | ||
|  |   #  MESSAGE(STATUS "${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}):\n${_MSG}")
 | ||
|  | ENDMACRO(DBG_MSG)
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | # required cv components with header and library if COMPONENTS unspecified
 | ||
|  | IF    (NOT OpenCV_FIND_COMPONENTS)
 | ||
|  |   # default
 | ||
|  |   SET(OpenCV_FIND_REQUIRED_COMPONENTS   CV CXCORE CVAUX HIGHGUI )
 | ||
|  |   IF   (WIN32)
 | ||
|  |     LIST(APPEND OpenCV_FIND_REQUIRED_COMPONENTS  CVCAM ) # WIN32 only actually
 | ||
|  |   ENDIF(WIN32)  
 | ||
|  | ENDIF (NOT OpenCV_FIND_COMPONENTS)
 | ||
|  | 
 | ||
|  | 
 | ||
|  | # typical root dirs of installations, exactly one of them is used
 | ||
|  | SET (OpenCV_POSSIBLE_ROOT_DIRS | ||
|  |   "${OpenCV_ROOT_DIR}"
 | ||
|  |   "$ENV{OpenCV_ROOT_DIR}"  
 | ||
|  |   "$ENV{OPENCV_DIR}"  # only for backward compatibility deprecated by ROOT_DIR
 | ||
|  |   "$ENV{OPENCV_HOME}" # only for backward compatibility
 | ||
|  |   "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Intel(R) Open Source Computer Vision Library_is1;Inno Setup: App Path]"
 | ||
|  |   "$ENV{ProgramFiles}/OpenCV"
 | ||
|  |   /usr/local
 | ||
|  |   /usr
 | ||
|  |   )
 | ||
|  | 
 | ||
|  | 
 | ||
|  | # MIP Uni Kiel /opt/net network installation 
 | ||
|  | # get correct prefix for current gcc compiler version for gcc 3.x  4.x
 | ||
|  | IF    (${CMAKE_COMPILER_IS_GNUCXX})
 | ||
|  |   IF    (NOT OpenCV_FIND_QUIETLY)
 | ||
|  |     MESSAGE(STATUS "Checking GNUCXX version 3/4 to determine  OpenCV /opt/net/ path")
 | ||
|  |   ENDIF (NOT OpenCV_FIND_QUIETLY)
 | ||
|  |   EXEC_PROGRAM(${CMAKE_CXX_COMPILER} ARGS --version OUTPUT_VARIABLE CXX_COMPILER_VERSION)  
 | ||
|  |   IF   (CXX_COMPILER_VERSION MATCHES ".*3\\.[0-9].*")
 | ||
|  |     SET(IS_GNUCXX3 TRUE)
 | ||
|  |     LIST(APPEND OpenCV_POSSIBLE_ROOT_DIRS /opt/net/gcc33/OpenCV )
 | ||
|  |   ENDIF(CXX_COMPILER_VERSION MATCHES ".*3\\.[0-9].*")  
 | ||
|  |   IF   (CXX_COMPILER_VERSION MATCHES ".*4\\.[0-9].*")
 | ||
|  |     SET(IS_GNUCXX4 TRUE)
 | ||
|  |     LIST(APPEND OpenCV_POSSIBLE_ROOT_DIRS /opt/net/gcc41/OpenCV )
 | ||
|  |   ENDIF(CXX_COMPILER_VERSION MATCHES ".*4\\.[0-9].*")
 | ||
|  | ENDIF (${CMAKE_COMPILER_IS_GNUCXX})
 | ||
|  | 
 | ||
|  | #DBG_MSG("DBG (OpenCV_POSSIBLE_ROOT_DIRS=${OpenCV_POSSIBLE_ROOT_DIRS}")
 | ||
|  | 
 | ||
|  | #
 | ||
|  | # select exactly ONE OpenCV base directory/tree 
 | ||
|  | # to avoid mixing different version headers and libs
 | ||
|  | #
 | ||
|  | FIND_PATH(OpenCV_ROOT_DIR  | ||
|  |   NAMES 
 | ||
|  |   cv/include/cv.h     # windows
 | ||
|  |   include/opencv/cv.h # linux /opt/net
 | ||
|  |   include/cv/cv.h 
 | ||
|  |   include/cv.h 
 | ||
|  |   PATHS ${OpenCV_POSSIBLE_ROOT_DIRS})
 | ||
|  | DBG_MSG("OpenCV_ROOT_DIR=${OpenCV_ROOT_DIR}")
 | ||
|  | 
 | ||
|  | 
 | ||
|  | # header include dir suffixes appended to OpenCV_ROOT_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_ROOT_DIR 
 | ||
|  | SET(OpenCV_LIBDIR_SUFFIXES | ||
|  |   lib
 | ||
|  |   OpenCV/lib
 | ||
|  |   otherlibs/_graphics/lib
 | ||
|  |   )
 | ||
|  | #DBG_MSG("OpenCV_LIBDIR_SUFFIXES=${OpenCV_LIBDIR_SUFFIXES}")
 | ||
|  | 
 | ||
|  | 
 | ||
|  | #
 | ||
|  | # find incdir for each lib
 | ||
|  | #
 | ||
|  | FIND_PATH(OpenCV_CV_INCLUDE_DIR | ||
|  |   NAMES cv.h      
 | ||
|  |   PATHS ${OpenCV_ROOT_DIR} 
 | ||
|  |   PATH_SUFFIXES ${OpenCV_INCDIR_SUFFIXES} )
 | ||
|  | FIND_PATH(OpenCV_CXCORE_INCLUDE_DIR    | ||
|  |   NAMES cxcore.h
 | ||
|  |   PATHS ${OpenCV_ROOT_DIR} 
 | ||
|  |   PATH_SUFFIXES ${OpenCV_INCDIR_SUFFIXES} )
 | ||
|  | FIND_PATH(OpenCV_CVAUX_INCLUDE_DIR     | ||
|  |   NAMES cvaux.h
 | ||
|  |   PATHS ${OpenCV_ROOT_DIR} 
 | ||
|  |   PATH_SUFFIXES ${OpenCV_INCDIR_SUFFIXES} )
 | ||
|  | FIND_PATH(OpenCV_HIGHGUI_INCLUDE_DIR   | ||
|  |   NAMES highgui.h 
 | ||
|  |   PATHS ${OpenCV_ROOT_DIR} 
 | ||
|  |   PATH_SUFFIXES ${OpenCV_INCDIR_SUFFIXES} )
 | ||
|  | FIND_PATH(OpenCV_CVCAM_INCLUDE_DIR     | ||
|  |   NAMES cvcam.h 
 | ||
|  |   PATHS ${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_CV_LIBRARY    | ||
|  |   NAMES cv opencv
 | ||
|  |   PATHS ${OpenCV_ROOT_DIR}  
 | ||
|  |   PATH_SUFFIXES  ${OpenCV_LIBDIR_SUFFIXES} )
 | ||
|  | FIND_LIBRARY(OpenCV_CVAUX_LIBRARY | ||
|  |   NAMES cvaux
 | ||
|  |   PATHS ${OpenCV_ROOT_DIR}  PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} )
 | ||
|  | FIND_LIBRARY(OpenCV_CVCAM_LIBRARY    | ||
|  |   NAMES cvcam
 | ||
|  |   PATHS ${OpenCV_ROOT_DIR}  PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} ) 
 | ||
|  | FIND_LIBRARY(OpenCV_CVHAARTRAINING_LIBRARY | ||
|  |   NAMES cvhaartraining
 | ||
|  |   PATHS ${OpenCV_ROOT_DIR}  PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} ) 
 | ||
|  | FIND_LIBRARY(OpenCV_CXCORE_LIBRARY   | ||
|  |   NAMES cxcore
 | ||
|  |   PATHS ${OpenCV_ROOT_DIR}  PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} )
 | ||
|  | FIND_LIBRARY(OpenCV_CXTS_LIBRARY    | ||
|  |   NAMES cxts
 | ||
|  |   PATHS ${OpenCV_ROOT_DIR}  PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} )
 | ||
|  | FIND_LIBRARY(OpenCV_HIGHGUI_LIBRARY   | ||
|  |   NAMES highgui
 | ||
|  |   PATHS ${OpenCV_ROOT_DIR}  PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} )
 | ||
|  | FIND_LIBRARY(OpenCV_ML_LIBRARY   | ||
|  |   NAMES ml
 | ||
|  |   PATHS ${OpenCV_ROOT_DIR}  PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} )
 | ||
|  | FIND_LIBRARY(OpenCV_TRS_LIBRARY   | ||
|  |   NAMES trs
 | ||
|  |   PATHS ${OpenCV_ROOT_DIR}  PATH_SUFFIXES ${OpenCV_LIBDIR_SUFFIXES} )
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | #
 | ||
|  | # Logic selecting required libs and headers
 | ||
|  | #
 | ||
|  | SET(OpenCV_FOUND ON)
 | ||
|  | DBG_MSG("OpenCV_FIND_REQUIRED_COMPONENTS=${OpenCV_FIND_REQUIRED_COMPONENTS}")
 | ||
|  | FOREACH(NAME ${OpenCV_FIND_REQUIRED_COMPONENTS} )
 | ||
|  | 
 | ||
|  |   # only good if header and library both found   
 | ||
|  |   IF    (OpenCV_${NAME}_INCLUDE_DIR AND OpenCV_${NAME}_LIBRARY)
 | ||
|  |     LIST(APPEND OpenCV_INCLUDE_DIRS ${OpenCV_${NAME}_INCLUDE_DIR} )
 | ||
|  |     LIST(APPEND OpenCV_LIBRARIES    ${OpenCV_${NAME}_LIBRARY} )
 | ||
|  |     #DBG_MSG("appending for NAME=${NAME} ${OpenCV_${NAME}_INCLUDE_DIR} and ${OpenCV_${NAME}_LIBRARY}" )
 | ||
|  |   ELSE  (OpenCV_${NAME}_INCLUDE_DIR AND OpenCV_${NAME}_LIBRARY)
 | ||
|  |     DBG_MSG("OpenCV component NAME=${NAME} not found! " | ||
|  |       "\nOpenCV_${NAME}_INCLUDE_DIR=${OpenCV_${NAME}_INCLUDE_DIR} "
 | ||
|  |       "\nOpenCV_${NAME}_LIBRARY=${OpenCV_${NAME}_LIBRARY} ")
 | ||
|  |     SET(OpenCV_FOUND OFF)
 | ||
|  |   ENDIF (OpenCV_${NAME}_INCLUDE_DIR AND OpenCV_${NAME}_LIBRARY)
 | ||
|  |   
 | ||
|  | ENDFOREACH(NAME)
 | ||
|  | 
 | ||
|  | DBG_MSG("OpenCV_INCLUDE_DIRS=${OpenCV_INCLUDE_DIRS}")
 | ||
|  | DBG_MSG("OpenCV_LIBRARIES=${OpenCV_LIBRARIES}")
 | ||
|  | 
 | ||
|  | # get the link directory for rpath to be used with LINK_DIRECTORIES: 
 | ||
|  | IF    (OpenCV_CV_LIBRARY)
 | ||
|  |   GET_FILENAME_COMPONENT(OpenCV_LINK_DIRECTORIES ${OpenCV_CV_LIBRARY} PATH)
 | ||
|  | ENDIF (OpenCV_CV_LIBRARY)
 | ||
|  | 
 | ||
|  | MARK_AS_ADVANCED( | ||
|  |   OpenCV_ROOT_DIR
 | ||
|  |   OpenCV_INCLUDE_DIRS
 | ||
|  |   OpenCV_CV_INCLUDE_DIR
 | ||
|  |   OpenCV_CXCORE_INCLUDE_DIR
 | ||
|  |   OpenCV_CVAUX_INCLUDE_DIR
 | ||
|  |   OpenCV_CVCAM_INCLUDE_DIR
 | ||
|  |   OpenCV_HIGHGUI_INCLUDE_DIR
 | ||
|  |   OpenCV_LIBRARIES
 | ||
|  |   OpenCV_CV_LIBRARY
 | ||
|  |   OpenCV_CXCORE_LIBRARY
 | ||
|  |   OpenCV_CVAUX_LIBRARY
 | ||
|  |   OpenCV_CVCAM_LIBRARY
 | ||
|  |   OpenCV_CVHAARTRAINING_LIBRARY
 | ||
|  |   OpenCV_CXTS_LIBRARY
 | ||
|  |   OpenCV_HIGHGUI_LIBRARY
 | ||
|  |   OpenCV_ML_LIBRARY
 | ||
|  |   OpenCV_TRS_LIBRARY
 | ||
|  |   )
 | ||
|  | 
 | ||
|  | 
 | ||
|  | # be backward compatible:
 | ||
|  | SET(OPENCV_LIBRARIES   ${OpenCV_LIBRARIES} )
 | ||
|  | SET(OPENCV_INCLUDE_DIR ${OpenCV_INCLUDE_DIRS} )
 | ||
|  | SET(OPENCV_FOUND       ${OpenCV_FOUND})
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | # display help message
 | ||
|  | IF(NOT OpenCV_FOUND)
 | ||
|  |   # make FIND_PACKAGE friendly
 | ||
|  |   IF(NOT OpenCV_FIND_QUIETLY)
 | ||
|  |     IF(OpenCV_FIND_REQUIRED)
 | ||
|  |       MESSAGE(FATAL_ERROR | ||
|  |         "OpenCV required but some headers or libs not found. Please specify it's location with OpenCV_ROOT_DIR env. variable.")
 | ||
|  |     ELSE(OpenCV_FIND_REQUIRED)
 | ||
|  |       MESSAGE(STATUS  | ||
|  |         "ERROR: OpenCV was not found.")
 | ||
|  |     ENDIF(OpenCV_FIND_REQUIRED)
 | ||
|  |   ENDIF(NOT OpenCV_FIND_QUIETLY)
 | ||
|  | ENDIF(NOT OpenCV_FOUND)
 |