Skip to content

Commit ca6d2fe

Browse files
author
Andrey Kamaev
committed
Moved 3rd-party libraries detection to separate cmake files
1 parent 2ac9338 commit ca6d2fe

5 files changed

+323
-316
lines changed

CMakeLists.txt

+9-295
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ else()
5050
cmake_minimum_required(VERSION 2.6.3)
5151
endif()
5252

53+
# must go before the project command
5354
set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "Configs" FORCE)
5455
if(DEFINED CMAKE_BUILD_TYPE AND CMAKE_VERSION VERSION_GREATER "2.8")
5556
set_property( CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS ${CMAKE_CONFIGURATION_TYPES} )
@@ -165,12 +166,10 @@ OCV_OPTION(INSTALL_ANDROID_EXAMPLES "Install Android examples" OFF IF ANDROID
165166
OCV_OPTION(INSTALL_TO_MANGLED_PATHS "Enables mangled install paths, that help with side by side installs." OFF IF (UNIX AND NOT ANDROID AND NOT IOS AND BUILD_SHARED_LIBS) )
166167

167168

168-
if(CMAKE_GENERATOR MATCHES Xcode)
169-
set(ENABLE_SOLUTION_FOLDERS0 ON)
170-
elseif(MSVC_IDE)
171-
set(ENABLE_SOLUTION_FOLDERS0 ON)
169+
if(MSVC_IDE OR CMAKE_GENERATOR MATCHES Xcode)
170+
set(ENABLE_SOLUTION_FOLDERS0 ON)
172171
else()
173-
set(ENABLE_SOLUTION_FOLDERS0 OFF)
172+
set(ENABLE_SOLUTION_FOLDERS0 OFF)
174173
endif()
175174

176175
# OpenCV build options
@@ -334,303 +333,18 @@ include(cmake/OpenCVPCHSupport.cmake REQUIRED)
334333
include(cmake/OpenCVModule.cmake REQUIRED)
335334

336335
# ----------------------------------------------------------------------------
337-
# Detect 3rd-party image IO libraries
336+
# Detect 3rd-party libraries
338337
# ----------------------------------------------------------------------------
339-
include(cmake/OpenCVIOLibs.cmake REQUIRED)
340338

341-
# ----------------------------------------------------------------------------
342-
# Detect 3rd-party GUI libraries
343-
# ----------------------------------------------------------------------------
344-
# --- QT4 ---
345-
ocv_clear_vars(HAVE_QT)
346-
if(WITH_QT)
347-
find_package(Qt4)
348-
if(QT4_FOUND)
349-
set(HAVE_QT TRUE)
350-
add_definitions(-DHAVE_QT) #We need to define te macro this way, using cvconfig.h.cmake does not work
351-
endif()
352-
endif()
353-
354-
# --- GTK ---
355-
ocv_clear_vars(HAVE_GTK HAVE_GTHREAD HAVE_GTKGLEXT)
356-
if(WITH_GTK AND NOT HAVE_QT)
357-
CHECK_MODULE(gtk+-2.0 HAVE_GTK)
358-
CHECK_MODULE(gthread-2.0 HAVE_GTHREAD)
359-
if(WITH_OPENGL)
360-
CHECK_MODULE(gtkglext-1.0 HAVE_GTKGLEXT)
361-
endif()
362-
endif()
363-
364-
# --- OpenGl ---
365-
ocv_clear_vars(HAVE_OPENGL HAVE_QT_OPENGL)
366-
if(WITH_OPENGL)
367-
if(WIN32 OR QT_QTOPENGL_FOUND OR HAVE_GTKGLEXT)
368-
find_package (OpenGL QUIET)
369-
if(OPENGL_FOUND)
370-
set(HAVE_OPENGL TRUE)
371-
set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${OPENGL_LIBRARIES})
372-
if(QT_QTOPENGL_FOUND)
373-
set(HAVE_QT_OPENGL TRUE)
374-
add_definitions(-DHAVE_QT_OPENGL)
375-
else()
376-
ocv_include_directories(${OPENGL_INCLUDE_DIR})
377-
endif()
378-
endif()
379-
endif()
380-
endif(WITH_OPENGL)
381-
382-
# ----------------------------------------------------------------------------
383-
# Detect 3rd-party video IO libraries
384-
# ----------------------------------------------------------------------------
385-
# --- GStreamer ---
386-
ocv_clear_vars(HAVE_GSTREAMER)
387-
if(WITH_GSTREAMER)
388-
CHECK_MODULE(gstreamer-base-0.10 HAVE_GSTREAMER)
389-
if(HAVE_GSTREAMER)
390-
CHECK_MODULE(gstreamer-app-0.10 HAVE_GSTREAMER)
391-
endif()
392-
if(HAVE_GSTREAMER)
393-
CHECK_MODULE(gstreamer-video-0.10 HAVE_GSTREAMER)
394-
endif()
395-
endif(WITH_GSTREAMER)
396-
397-
# --- unicap ---
398-
ocv_clear_vars(HAVE_UNICAP)
399-
if(WITH_UNICAP)
400-
CHECK_MODULE(libunicap HAVE_UNICAP_)
401-
CHECK_MODULE(libucil HAVE_UNICAP_UCIL)
402-
if(HAVE_UNICAP_ AND HAVE_UNICAP_UCIL)
403-
set(HAVE_UNICAP TRUE)
404-
endif()
405-
endif(WITH_UNICAP)
406-
407-
# --- PvApi ---
408-
ocv_clear_vars(HAVE_PVAPI)
409-
if(WITH_PVAPI)
410-
find_path(PVAPI_INCLUDE_PATH "PvApi.h"
411-
PATHS /usr/local /opt /usr ENV ProgramFiles ENV ProgramW6432
412-
PATH_SUFFIXES include "Allied Vision Technologies/GigESDK/inc-pc" "AVT GigE SDK/inc-pc" "GigESDK/inc-pc"
413-
DOC "The path to PvAPI header")
414-
415-
if(PVAPI_INCLUDE_PATH)
416-
if(X86 AND NOT WIN32)
417-
set(PVAPI_SDK_SUBDIR x86)
418-
elseif(X86_64)
419-
set(PVAPI_SDK_SUBDIR x64)
420-
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES arm)
421-
set(PVAPI_SDK_SUBDIR arm)
422-
endif()
423-
424-
get_filename_component(_PVAPI_LIBRARY "${PVAPI_INCLUDE_PATH}/../lib-pc" ABSOLUTE)
425-
if(PVAPI_SDK_SUBDIR)
426-
set(_PVAPI_LIBRARY "${_PVAPI_LIBRARY}/${PVAPI_SDK_SUBDIR}")
427-
endif()
428-
if(NOT WIN32 AND CMAKE_COMPILER_IS_GNUCXX)
429-
set(_PVAPI_LIBRARY "${_PVAPI_LIBRARY}/${CMAKE_OPENCV_GCC_VERSION_MAJOR}.${CMAKE_OPENCV_GCC_VERSION_MINOR}")
430-
endif()
431-
432-
set(PVAPI_LIBRARY "${_PVAPI_LIBRARY}/${CMAKE_STATIC_LIBRARY_PREFIX}PvAPI${CMAKE_STATIC_LIBRARY_SUFFIX}" CACHE PATH "The PvAPI library")
433-
if(EXISTS "${PVAPI_LIBRARY}")
434-
set(HAVE_PVAPI TRUE)
435-
endif()
436-
endif(PVAPI_INCLUDE_PATH)
437-
endif(WITH_PVAPI)
438-
439-
# --- Dc1394 ---
440-
ocv_clear_vars(HAVE_DC1394 HAVE_DC1394_2)
441-
if(WITH_1394)
442-
CHECK_MODULE(libdc1394-2 HAVE_DC1394_2)
443-
if(NOT HAVE_DC1394_2)
444-
CHECK_MODULE(libdc1394 HAVE_DC1394)
445-
endif()
446-
endif(WITH_1394)
447-
448-
# --- xine ---
449-
ocv_clear_vars(HAVE_XINE)
450-
if(WITH_XINE)
451-
CHECK_MODULE(libxine HAVE_XINE)
452-
endif(WITH_XINE)
453-
454-
# --- V4L ---
455-
ocv_clear_vars(HAVE_LIBV4L HAVE_CAMV4L HAVE_CAMV4L2)
456-
if(WITH_V4L)
457-
CHECK_MODULE(libv4l1 HAVE_LIBV4L)
458-
CHECK_INCLUDE_FILE(linux/videodev.h HAVE_CAMV4L)
459-
CHECK_INCLUDE_FILE(linux/videodev2.h HAVE_CAMV4L2)
460-
endif(WITH_V4L)
461-
462-
# --- OpenNI ---
463-
ocv_clear_vars(HAVE_OPENNI HAVE_OPENNI_PRIME_SENSOR_MODULE)
464-
if(WITH_OPENNI)
465-
include(cmake/OpenCVFindOpenNI.cmake)
466-
endif(WITH_OPENNI)
467-
468-
# --- XIMEA ---
469-
ocv_clear_vars(HAVE_XIMEA)
470-
if(WITH_XIMEA)
471-
include(cmake/OpenCVFindXimea.cmake)
472-
if(XIMEA_FOUND)
473-
set(HAVE_XIMEA TRUE)
474-
endif()
475-
endif(WITH_XIMEA)
476-
477-
# --- FFMPEG ---
478-
ocv_clear_vars(HAVE_FFMPEG HAVE_FFMPEG_CODEC HAVE_FFMPEG_FORMAT HAVE_FFMPEG_UTIL HAVE_FFMPEG_SWSCALE HAVE_GENTOO_FFMPEG HAVE_FFMPEG_FFMPEG)
479-
if(WITH_FFMPEG)
480-
if(WIN32)
481-
include(3rdparty/ffmpeg/ffmpeg_version.cmake REQUIRED)
482-
elseif(UNIX)
483-
CHECK_MODULE(libavcodec HAVE_FFMPEG_CODEC)
484-
CHECK_MODULE(libavformat HAVE_FFMPEG_FORMAT)
485-
CHECK_MODULE(libavutil HAVE_FFMPEG_UTIL)
486-
CHECK_MODULE(libswscale HAVE_FFMPEG_SWSCALE)
487-
488-
CHECK_INCLUDE_FILE(libavformat/avformat.h HAVE_GENTOO_FFMPEG)
489-
CHECK_INCLUDE_FILE(ffmpeg/avformat.h HAVE_FFMPEG_FFMPEG)
490-
if(NOT HAVE_GENTOO_FFMPEG AND NOT HAVE_FFMPEG_FFMPEG)
491-
if(EXISTS /usr/include/ffmpeg/libavformat/avformat.h OR HAVE_FFMPEG_SWSCALE)
492-
set(HAVE_GENTOO_FFMPEG TRUE)
493-
endif()
494-
endif()
495-
if(HAVE_FFMPEG_CODEC AND HAVE_FFMPEG_FORMAT AND HAVE_FFMPEG_UTIL AND HAVE_FFMPEG_SWSCALE)
496-
set(HAVE_FFMPEG TRUE)
497-
endif()
498-
499-
if(HAVE_FFMPEG)
500-
# Find the bzip2 library because it is required on some systems
501-
FIND_LIBRARY(BZIP2_LIBRARIES NAMES bz2 bzip2)
502-
if(NOT BZIP2_LIBRARIES)
503-
# Do an other trial
504-
FIND_FILE(BZIP2_LIBRARIES NAMES libbz2.so.1 PATHS /lib)
505-
endif()
506-
endif(HAVE_FFMPEG)
507-
endif()
508-
509-
if(APPLE)
510-
find_path(FFMPEG_INCLUDE_DIR "libavformat/avformat.h"
511-
PATHS /usr/local /usr /opt
512-
PATH_SUFFIXES include
513-
DOC "The path to FFMPEG headers")
514-
if(FFMPEG_INCLUDE_DIR)
515-
set(HAVE_GENTOO_FFMPEG TRUE)
516-
set(FFMPEG_LIB_DIR "${FFMPEG_INCLUDE_DIR}/../lib" CACHE PATH "Full path of FFMPEG library directory")
517-
if(EXISTS "${FFMPEG_LIB_DIR}/libavcodec.a")
518-
set(HAVE_FFMPEG_CODEC 1)
519-
set(ALIASOF_libavcodec_VERSION "Unknown")
520-
if(EXISTS "${FFMPEG_LIB_DIR}/libavformat.a")
521-
set(HAVE_FFMPEG_FORMAT 1)
522-
set(ALIASOF_libavformat_VERSION "Unknown")
523-
if(EXISTS "${FFMPEG_LIB_DIR}/libavutil.a")
524-
set(HAVE_FFMPEG_UTIL 1)
525-
set(ALIASOF_libavutil_VERSION "Unknown")
526-
if(EXISTS "${FFMPEG_LIB_DIR}/libswscale.a")
527-
set(HAVE_FFMPEG_SWSCALE 1)
528-
set(ALIASOF_libswscale_VERSION "Unknown")
529-
set(HAVE_FFMPEG 1)
530-
endif()
531-
endif()
532-
endif()
533-
endif()
534-
endif(FFMPEG_INCLUDE_DIR)
535-
if(HAVE_FFMPEG)
536-
set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} "${FFMPEG_LIB_DIR}/libavcodec.a"
537-
"${FFMPEG_LIB_DIR}/libavformat.a" "${FFMPEG_LIB_DIR}/libavutil.a"
538-
"${FFMPEG_LIB_DIR}/libswscale.a")
539-
ocv_include_directories(${FFMPEG_INCLUDE_DIR})
540-
endif()
541-
endif(APPLE)
542-
endif(WITH_FFMPEG)
543-
544-
# --- VideoInput ---
545-
if(WITH_VIDEOINPUT)
546-
# always have VideoInput on Windows
547-
set(HAVE_VIDEOINPUT 1)
548-
endif(WITH_VIDEOINPUT)
549-
550-
# --- Extra HighGUI libs on Windows ---
551-
if(WIN32)
552-
list(APPEND HIGHGUI_LIBRARIES comctl32 gdi32 ole32)
553-
if(MSVC)
554-
list(APPEND HIGHGUI_LIBRARIES vfw32)
555-
elseif(MINGW64)
556-
list(APPEND HIGHGUI_LIBRARIES msvfw32 avifil32 avicap32 winmm)
557-
elseif(MINGW)
558-
list(APPEND HIGHGUI_LIBRARIES vfw32 winmm)
559-
endif()
560-
endif(WIN32)
339+
include(cmake/OpenCVFindLibsGrfmt.cmake REQUIRED)
340+
include(cmake/OpenCVFindLibsGUI.cmake REQUIRED)
341+
include(cmake/OpenCVFindLibsVideo.cmake REQUIRED)
342+
include(cmake/OpenCVFindLibsPerf.cmake REQUIRED)
561343

562344

563345
# ----------------------------------------------------------------------------
564346
# Detect other 3rd-party libraries/tools
565347
# ----------------------------------------------------------------------------
566-
# --- TBB ---
567-
if(WITH_TBB)
568-
include(cmake/OpenCVDetectTBB.cmake REQUIRED)
569-
endif(WITH_TBB)
570-
571-
# --- IPP ---
572-
ocv_clear_vars(IPP_FOUND)
573-
if(WITH_IPP)
574-
include(cmake/OpenCVFindIPP.cmake)
575-
if(IPP_FOUND)
576-
add_definitions(-DHAVE_IPP)
577-
ocv_include_directories(${IPP_INCLUDE_DIRS})
578-
link_directories(${IPP_LIBRARY_DIRS})
579-
set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${IPP_LIBRARIES})
580-
endif()
581-
endif(WITH_IPP)
582-
583-
# --- CUDA ---
584-
if(WITH_CUDA)
585-
include(cmake/OpenCVDetectCUDA.cmake REQUIRED)
586-
endif(WITH_CUDA)
587-
588-
# --- Eigen ---
589-
if(WITH_EIGEN)
590-
find_path(EIGEN_INCLUDE_PATH "Eigen/Core"
591-
PATHS /usr/local /opt /usr ENV ProgramFiles ENV ProgramW6432
592-
PATH_SUFFIXES include/eigen3 include/eigen2 Eigen/include/eigen3 Eigen/include/eigen2
593-
DOC "The path to Eigen3/Eigen2 headers")
594-
595-
if(EIGEN_INCLUDE_PATH)
596-
ocv_include_directories(${EIGEN_INCLUDE_PATH})
597-
ocv_parse_header("${EIGEN_INCLUDE_PATH}/Eigen/src/Core/util/Macros.h" EIGEN_VERSION_LINES EIGEN_WORLD_VERSION EIGEN_MAJOR_VERSION EIGEN_MINOR_VERSION)
598-
set(HAVE_EIGEN 1)
599-
endif()
600-
endif(WITH_EIGEN)
601-
602-
# --- Clp ---
603-
ocv_clear_vars(HAVE_CLP)
604-
if(WITH_CLP)
605-
if(UNIX)
606-
PKG_CHECK_MODULES(CLP clp)
607-
if(CLP_FOUND)
608-
set(HAVE_CLP TRUE)
609-
if(NOT ${CLP_INCLUDE_DIRS} STREQUAL "")
610-
ocv_include_directories(${CLP_INCLUDE_DIRS})
611-
endif()
612-
link_directories(${CLP_LIBRARY_DIRS})
613-
set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${CLP_LIBRARIES})
614-
endif()
615-
endif()
616-
617-
if(NOT CLP_FOUND)
618-
find_path(CLP_INCLUDE_PATH "coin"
619-
PATHS "/usr/local/include" "/usr/include" "/opt/include"
620-
DOC "The path to Clp headers")
621-
if(CLP_INCLUDE_PATH)
622-
ocv_include_directories(${CLP_INCLUDE_PATH} "${CLP_INCLUDE_PATH}/coin")
623-
set(CLP_LIBRARY_DIR "${CLP_INCLUDE_PATH}/../lib" CACHE PATH "Full path of Clp library directory")
624-
link_directories(${CLP_LIBRARY_DIR})
625-
if(UNIX)
626-
set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} Clp CoinUtils bz2 z lapack blas m)
627-
else()
628-
set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} libClp libCoinUtils)
629-
endif()
630-
set(HAVE_CLP TRUE)
631-
endif()
632-
endif()
633-
endif(WITH_CLP)
634348

635349
# --- LATEX for pdf documentation ---
636350
if(BUILD_DOCS)

cmake/OpenCVFindLibsGUI.cmake

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# ----------------------------------------------------------------------------
2+
# Detect 3rd-party GUI libraries
3+
# ----------------------------------------------------------------------------
4+
5+
# --- QT4 ---
6+
ocv_clear_vars(HAVE_QT)
7+
if(WITH_QT)
8+
find_package(Qt4)
9+
if(QT4_FOUND)
10+
set(HAVE_QT TRUE)
11+
add_definitions(-DHAVE_QT) # We need to define the macro this way, using cvconfig.h does not work
12+
endif()
13+
endif()
14+
15+
# --- GTK ---
16+
ocv_clear_vars(HAVE_GTK HAVE_GTHREAD HAVE_GTKGLEXT)
17+
if(WITH_GTK AND NOT HAVE_QT)
18+
CHECK_MODULE(gtk+-2.0 HAVE_GTK)
19+
CHECK_MODULE(gthread-2.0 HAVE_GTHREAD)
20+
if(WITH_OPENGL)
21+
CHECK_MODULE(gtkglext-1.0 HAVE_GTKGLEXT)
22+
endif()
23+
endif()
24+
25+
# --- OpenGl ---
26+
ocv_clear_vars(HAVE_OPENGL HAVE_QT_OPENGL)
27+
if(WITH_OPENGL)
28+
if(WIN32 OR QT_QTOPENGL_FOUND OR HAVE_GTKGLEXT)
29+
find_package (OpenGL QUIET)
30+
if(OPENGL_FOUND)
31+
set(HAVE_OPENGL TRUE)
32+
list(APPEND OPENCV_LINKER_LIBS ${OPENGL_LIBRARIES})
33+
if(QT_QTOPENGL_FOUND)
34+
set(HAVE_QT_OPENGL TRUE)
35+
add_definitions(-DHAVE_QT_OPENGL)
36+
else()
37+
ocv_include_directories(${OPENGL_INCLUDE_DIR})
38+
endif()
39+
endif()
40+
endif()
41+
endif(WITH_OPENGL)

0 commit comments

Comments
 (0)