CMake: Detect when to set OPENCV_VER_23/OPENCV_VER_3

This commit is contained in:
Sam Edwards 2019-01-05 13:53:55 -07:00
parent 1a17808991
commit 654abdc5eb
4 changed files with 40 additions and 15 deletions

View File

@ -21,6 +21,7 @@
# stitching
# superres
# video
# videoio
# videostab
#
# Once done this will define:
@ -30,33 +31,44 @@
# 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)
if(NOT OpenCV_V1_INCLUDE_DIR)
find_path(OpenCV_V1_INCLUDE_DIR
NAMES "cv.h"
PATH_SUFFIXES "opencv")
mark_as_advanced(OpenCV_V1_INCLUDE_DIR)
endif()
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()
if(NOT OpenCV_V2_INCLUDE_DIR)
find_path(OpenCV_V2_INCLUDE_DIR "opencv2/core/core.hpp")
mark_as_advanced(OpenCV_V2_INCLUDE_DIR)
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
videostab)
videoio videostab)
list(FIND OpenCV_FIND_COMPONENTS "${_component}" _index)
if(_index GREATER -1 OR _component STREQUAL "core")
@ -76,4 +88,5 @@ unset(_component)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(OpenCV HANDLE_COMPONENTS
REQUIRED_VARS OpenCV_INCLUDE_DIRS OpenCV_LIBS)
REQUIRED_VARS OpenCV_INCLUDE_DIRS OpenCV_LIBS
OpenCV_VERSION_MAJOR OpenCV_VERSION_MINOR)

View File

@ -474,7 +474,7 @@ package_status(EGL "EGL")
#
# OpenCV
find_package(OpenCV QUIET COMPONENTS core highgui)
find_package(OpenCV QUIET COMPONENTS core highgui OPTIONAL_COMPONENTS videoio)
package_option(OPENCV
"Enable support for OpenCV. This will be built into the 'vision' package."
@ -482,6 +482,13 @@ package_option(OPENCV
package_status(OPENCV "OpenCV")
if(OpenCV_VERSION_MAJOR GREATER_EQUAL 3)
set(OPENCV_VER_3 ON)
elseif(OpenCV_VERSION_MAJOR GREATER_EQUAL 2 AND
OpenCV_VERSION_MINOR GREATER_EQUAL 3)
set(OPENCV_VER_23 ON)
endif()
# ARToolKit
find_package(ARToolKit QUIET)

View File

@ -108,7 +108,6 @@
/* Define if we have OpenCV installed and want to build for OpenCV. */
#cmakedefine HAVE_OPENCV
#cmakedefine OPENCV_VER_23
/* Define if we have FFMPEG installed and want to build for FFMPEG. */
#cmakedefine HAVE_FFMPEG

View File

@ -33,6 +33,12 @@ target_link_libraries(p3vision panda
set_target_properties(p3vision PROPERTIES CXX_EXCEPTIONS ON)
target_interrogate(p3vision ALL)
if(OPENCV_VER_3)
set_target_properties(p3vision PROPERTIES COMPILE_DEFINITIONS "OPENCV_VER_3")
elseif(OPENCV_VER_23)
set_target_properties(p3vision PROPERTIES COMPILE_DEFINITIONS "OPENCV_VER_23")
endif()
install(TARGETS p3vision
EXPORT Vision COMPONENT Vision
DESTINATION lib