panda3d/cmake/modules/FindOpenCV.cmake

93 lines
2.7 KiB
CMake

# Filename: FindOpenCV.cmake
# Authors: CFSworks (3 Nov, 2018)
#
# Usage:
# find_package(OpenCV [REQUIRED] [QUIET])
#
# This supports the following components:
# calib3d
# contrib
# core
# features2d
# flann
# gpu
# highgui
# imgproc
# legacy
# ml
# nonfree
# objdetect
# photo
# stitching
# superres
# video
# videoio
# videostab
#
# Once done this will define:
# OPENCV_FOUND - system has OpenCV
# OpenCV_INCLUDE_DIRS - the include dir(s) containing OpenCV header files
# OpenCV_comp_LIBRARY - the path to the OpenCV library for the particular
# component
# OpenCV_LIBS - the paths to the OpenCV libraries for the requested
# component(s)
# OpenCV_VERSION_MAJOR- a "best guess" of the major version (X.x)
# OpenCV_VERSION_MINOR- a "best guess" of the minor version (x.X)
#
set(OpenCV_INCLUDE_DIRS)
find_path(OpenCV_V1_INCLUDE_DIR
NAMES "cv.h"
PATH_SUFFIXES "opencv")
mark_as_advanced(OpenCV_V1_INCLUDE_DIR)
if(OpenCV_V1_INCLUDE_DIR)
list(APPEND OpenCV_INCLUDE_DIRS "${OpenCV_V1_INCLUDE_DIR}")
# This is a wild guess:
set(OpenCV_VERSION_MAJOR 1)
set(OpenCV_VERSION_MINOR 0)
endif()
find_path(OpenCV_V2_INCLUDE_DIR "opencv2/core/version.hpp")
mark_as_advanced(OpenCV_V2_INCLUDE_DIR)
if(OpenCV_V2_INCLUDE_DIR)
list(APPEND OpenCV_INCLUDE_DIRS "${OpenCV_V2_INCLUDE_DIR}")
file(STRINGS "${OpenCV_V2_INCLUDE_DIR}/opencv2/core/version.hpp"
_version_major REGEX "#define CV_VERSION_EPOCH")
file(STRINGS "${OpenCV_V2_INCLUDE_DIR}/opencv2/core/version.hpp"
_version_minor REGEX "#define CV_VERSION_MAJOR")
string(REGEX REPLACE "[^0-9]" "" OpenCV_VERSION_MAJOR "${_version_major}")
string(REGEX REPLACE "[^0-9]" "" OpenCV_VERSION_MINOR "${_version_minor}")
unset(_version_major)
unset(_version_minor)
endif()
set(OpenCV_LIBS)
foreach(_component calib3d contrib core features2d flann gpu highgui imgproc
legacy ml nonfree objdetect photo stitching superres video
videoio videostab)
list(FIND OpenCV_FIND_COMPONENTS "${_component}" _index)
if(_index GREATER -1 OR _component STREQUAL "core")
if(NOT OpenCV_${_component}_LIBRARY)
find_library(OpenCV_${_component}_LIBRARY
NAMES "opencv_${_component}")
endif()
if(OpenCV_${_component}_LIBRARY)
list(APPEND OpenCV_LIBS "${OpenCV_${_component}_LIBRARY}")
set(OpenCV_${_component}_FOUND ON)
endif()
endif()
unset(_index)
endforeach(_component)
unset(_component)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(OpenCV HANDLE_COMPONENTS
REQUIRED_VARS OpenCV_INCLUDE_DIRS OpenCV_LIBS
OpenCV_VERSION_MAJOR OpenCV_VERSION_MINOR)