1 # ----------------------------------------------------------------------------
2 # Root CMake file for OpenCV
4 # From the off-tree build directory, invoke:
5 # $ cmake <PATH_TO_OPENCV_ROOT>
8 # - OCT-2008: Initial version <joseluisblancoc@gmail.com>
10 # ----------------------------------------------------------------------------
12 set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
14 # Following block can broke build in case of cross-compilng
15 # but CMAKE_CROSSCOMPILING variable will be set only on project(OpenCV) command
16 # so we will try to detect crosscompiling by presense of CMAKE_TOOLCHAIN_FILE
17 if(NOT CMAKE_TOOLCHAIN_FILE)
18 # Add these standard paths to the search paths for FIND_LIBRARY
19 # to find libraries from these locations first
21 set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} /lib /usr/lib)
24 # it _must_ go before PROJECT(OpenCV) in order to work
26 set(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}/install" CACHE PATH "Installation Directory")
28 set(CMAKE_INSTALL_PREFIX "/usr/local" CACHE PATH "Installation Directory")
32 set(CMAKE_USE_RELATIVE_PATHS ON CACHE INTERNAL "" FORCE)
34 endif(NOT CMAKE_TOOLCHAIN_FILE)
36 # --------------------------------------------------------------
37 # Top level OpenCV project
38 # --------------------------------------------------------------
40 cmake_minimum_required(VERSION 2.6.3)
42 cmake_minimum_required(VERSION 2.8)
46 set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "Configs" FORCE)
47 if(DEFINED CMAKE_BUILD_TYPE AND CMAKE_VERSION VERSION_GREATER "2.8")
48 set_property( CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS ${CMAKE_CONFIGURATION_TYPES} )
51 set(CMAKE_C_FLAGS_MINSIZEREL "" CACHE INTERNAL "" FORCE)
52 set(CMAKE_C_FLAGS_RELWITHDEBINFO "" CACHE INTERNAL "" FORCE)
53 set(CMAKE_CXX_FLAGS_MINSIZEREL "" CACHE INTERNAL "" FORCE)
54 set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "" CACHE INTERNAL "" FORCE)
55 set(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "" CACHE INTERNAL "" FORCE)
56 set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "" CACHE INTERNAL "" FORCE)
57 set(CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL "" CACHE INTERNAL "" FORCE)
58 set(CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO "" CACHE INTERNAL "" FORCE)
59 set(CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL "" CACHE INTERNAL "" FORCE)
60 set(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "" CACHE INTERNAL "" FORCE)
61 set(CMAKE_VERBOSE OFF CACHE BOOL "Verbose mode")
63 set(CMAKE_VERBOSE_MAKEFILE 1)
66 # --------------------------------------------------------------
67 # Indicate CMake 2.7 and above that we don't want to mix relative
68 # and absolute paths in linker lib lists.
69 # Run "cmake --help-policy CMP0003" for more information.
70 # --------------------------------------------------------------
71 if(COMMAND cmake_policy)
72 cmake_policy(SET CMP0003 NEW)
75 # ----------------------------------------------------------------------------
76 # Build static or dynamic libs?
77 # Default: dynamic libraries
78 # ----------------------------------------------------------------------------
80 set(BUILD_SHARED_LIBS ON CACHE BOOL "Build shared libraries (.dll/.so) instead of static ones (.lib/.a)")
82 set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared libraries (.dll/.so) instead of static ones (.lib/.a)")
84 # ----------------------------------------------------------------------------
85 # Include debug info into debug libs?
87 # ----------------------------------------------------------------------------
88 set(BUILD_WITH_DEBUG_INFO ON CACHE BOOL "Include debug info into debug libs")
90 # ----------------------------------------------------------------------------
91 # Get actual OpenCV version number from sources
92 # ----------------------------------------------------------------------------
93 SET(OPENCV_VERSION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/modules/core/include/opencv2/core/version.hpp")
94 FILE(STRINGS "${OPENCV_VERSION_FILE}" OPENCV_VERSION_PARTS REGEX "#define CV_.+OR_VERSION[ ]+[0-9]+" )
95 string(REGEX REPLACE ".+CV_MAJOR_VERSION[ ]+([0-9]+).*" "\\1" OPENCV_VERSION_MAJOR "${OPENCV_VERSION_PARTS}")
96 string(REGEX REPLACE ".+CV_MINOR_VERSION[ ]+([0-9]+).*" "\\1" OPENCV_VERSION_MINOR "${OPENCV_VERSION_PARTS}")
97 string(REGEX REPLACE ".+CV_SUBMINOR_VERSION[ ]+([0-9]+).*" "\\1" OPENCV_VERSION_PATCH "${OPENCV_VERSION_PARTS}")
98 set(OPENCV_VERSION "${OPENCV_VERSION_MAJOR}.${OPENCV_VERSION_MINOR}.${OPENCV_VERSION_PATCH}")
100 set(OPENCV_SOVERSION "${OPENCV_VERSION_MAJOR}.${OPENCV_VERSION_MINOR}")
102 # create a dependency on version file
103 # we will never use output of the following command but cmake will rerun if version file changes
104 configure_file("${OPENCV_VERSION_FILE}" "${CMAKE_BINARY_DIR}/junk/version.junk" COPYONLY)
108 set(OPENCV_DLLVERSION "${OPENCV_VERSION_MAJOR}${OPENCV_VERSION_MINOR}${OPENCV_VERSION_PATCH}")
109 set(OPENCV_DEBUG_POSTFIX d)
112 set(OPENCV_DLLVERSION "")
113 set(OPENCV_DEBUG_POSTFIX)
117 set(OPENCV_INCLUDE_PREFIX include)
118 if(UNIX AND NOT ANDROID AND BUILD_SHARED_LIBS)
119 option(OPENCV_MANGLED_INSTALL_PATHS "Enables mangled install paths, that help with side by side installs." False)
120 if(OPENCV_MANGLED_INSTALL_PATHS)
121 set(OPENCV_INCLUDE_PREFIX include/opencv-${OPENCV_VERSION})
126 # Save libs and executables in the same place
127 set(LIBRARY_OUTPUT_PATH "${CMAKE_BINARY_DIR}/lib" CACHE PATH "Output directory for libraries" )
128 set(EXECUTABLE_OUTPUT_PATH "${CMAKE_BINARY_DIR}/bin" CACHE PATH "Output directory for applications" )
131 set(OPENCV_DOC_INSTALL_PATH doc)
132 elseif(OPENCV_MANGLED_INSTALL_PATHS)
133 set(OPENCV_DOC_INSTALL_PATH share/OpenCV-${OPENCV_VERSION}/doc)
135 set(OPENCV_DOC_INSTALL_PATH share/OpenCV/doc)
139 set(OPENCV_LIB_INSTALL_PATH libs/${ANDROID_NDK_ABI_NAME})
141 set(OPENCV_LIB_INSTALL_PATH lib${LIB_SUFFIX})
144 set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${OPENCV_LIB_INSTALL_PATH}")
145 set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
147 # search packages for host system instead of packages for target system
148 # in case of cross compilation thess macro should be defined by toolchain file
149 if(NOT COMMAND find_host_package)
150 macro(find_host_package)
151 find_package(${ARGN})
154 if(NOT COMMAND find_host_program)
155 macro(find_host_program)
156 find_program(${ARGN})
160 # ----------------------------------------------------------------------------
161 # Use statically or dynamically linked CRT?
163 # ----------------------------------------------------------------------------
164 if(WIN32 AND NOT BUILD_SHARED_LIBS)
165 option (BUILD_WITH_STATIC_CRT "Enables use of staticaly linked CRT" ON)
169 if(BUILD_WITH_STATIC_CRT)
171 CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
172 CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO
173 CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
174 CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
175 if(${flag_var} MATCHES "/MD")
176 string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
178 if(${flag_var} MATCHES "/MDd")
179 string(REGEX REPLACE "/MDd" "/MTd" ${flag_var} "${${flag_var}}")
183 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /NODEFAULTLIB:atlthunk.lib /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:msvcrtd.lib")
184 set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:libcmt.lib")
185 set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /NODEFAULTLIB:libcmtd.lib")
186 else(BUILD_WITH_STATIC_CRT)
188 CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
189 CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO
190 CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
191 CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
192 if(${flag_var} MATCHES "/MT")
193 string(REGEX REPLACE "/MT" "/MD" ${flag_var} "${${flag_var}}")
195 if(${flag_var} MATCHES "/MTd")
196 string(REGEX REPLACE "/MTd" "/MDd" ${flag_var} "${${flag_var}}")
199 endif(BUILD_WITH_STATIC_CRT)
201 include(ProcessorCount)
204 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP${N} ")
205 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP${N} ")
208 if(NOT BUILD_WITH_DEBUG_INFO)
209 string(REPLACE "/debug" "" CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG}")
210 string(REPLACE "/DEBUG" "" CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG}")
211 string(REPLACE "/INCREMENTAL:YES" "/INCREMENTAL:NO" CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG}")
212 string(REPLACE "/INCREMENTAL " "/INCREMENTAL:NO " CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG}")
214 string(REPLACE "/debug" "" CMAKE_MODULE_LINKER_FLAGS_DEBUG "${CMAKE_MODULE_LINKER_FLAGS_DEBUG}")
215 string(REPLACE "/DEBUG" "" CMAKE_MODULE_LINKER_FLAGS_DEBUG "${CMAKE_MODULE_LINKER_FLAGS_DEBUG}")
216 string(REPLACE "/INCREMENTAL:YES" "/INCREMENTAL:NO" CMAKE_MODULE_LINKER_FLAGS_DEBUG "${CMAKE_MODULE_LINKER_FLAGS_DEBUG}")
217 string(REPLACE "/INCREMENTAL " "/INCREMENTAL:NO " CMAKE_MODULE_LINKER_FLAGS_DEBUG "${CMAKE_MODULE_LINKER_FLAGS_DEBUG}")
219 string(REPLACE "/debug" "" CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_SHARED_LINKER_FLAGS_DEBUG}")
220 string(REPLACE "/DEBUG" "" CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_SHARED_LINKER_FLAGS_DEBUG}")
221 string(REPLACE "/INCREMENTAL:YES" "/INCREMENTAL:NO" CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_SHARED_LINKER_FLAGS_DEBUG}")
222 string(REPLACE "/INCREMENTAL " "/INCREMENTAL:NO " CMAKE_SHARED_LINKER_FLAGS_DEBUG "${CMAKE_SHARED_LINKER_FLAGS_DEBUG}")
224 string(REPLACE "/Zi" "" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
225 string(REPLACE "/Zi" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
230 # ----------------------------------------------------------------------------
231 # Variables for cvconfig.h.cmake
232 # ----------------------------------------------------------------------------
233 set(PACKAGE "opencv")
234 set(PACKAGE_BUGREPORT "opencvlibrary-devel@lists.sourceforge.net")
235 set(PACKAGE_NAME "opencv")
236 set(PACKAGE_STRING "${PACKAGE} ${OPENCV_VERSION}")
237 set(PACKAGE_TARNAME "${PACKAGE}")
238 set(PACKAGE_VERSION "${OPENCV_VERSION}")
240 # ----------------------------------------------------------------------------
241 # Autodetect if we are in a SVN repository
242 # ----------------------------------------------------------------------------
243 find_host_program(SVNVERSION_PATH svnversion)
244 mark_as_advanced(force SVNVERSION_PATH)
246 message(STATUS "Extracting svn version, please wait...")
247 execute_process(COMMAND ${SVNVERSION_PATH} -n ${OpenCV_SOURCE_DIR} OUTPUT_VARIABLE SVNVERSION_RESULT)
249 if(SVNVERSION_RESULT MATCHES "exported")
250 # This is NOT a svn repository:
251 set(OPENCV_SVNVERSION "")
252 message(STATUS "SVNVERSION: exported")
254 set(OPENCV_SVNVERSION " svn:${SVNVERSION_RESULT}")
255 message(STATUS "SVNVERSION: ${OPENCV_SVNVERSION}")
258 # We don't have svnversion:
259 set(OPENCV_SVNVERSION "")
262 # ----------------------------------------------------------------------------
263 # Detect Microsoft compiler:
264 # ----------------------------------------------------------------------------
269 # ----------------------------------------------------------------------------
270 # Detect GNU version:
271 # ----------------------------------------------------------------------------
272 if(CMAKE_COMPILER_IS_GNUCXX)
273 execute_process(COMMAND ${CMAKE_CXX_COMPILER} --version
274 OUTPUT_VARIABLE CMAKE_OPENCV_GCC_VERSION_FULL
275 OUTPUT_STRIP_TRAILING_WHITESPACE)
277 execute_process(COMMAND ${CMAKE_CXX_COMPILER} -v
278 ERROR_VARIABLE CMAKE_OPENCV_GCC_INFO_FULL
279 OUTPUT_STRIP_TRAILING_WHITESPACE)
281 # Typical output in CMAKE_OPENCV_GCC_VERSION_FULL: "c+//0 (whatever) 4.2.3 (...)"
282 # Look for the version number
283 string(REGEX MATCH "[0-9]+.[0-9]+.[0-9]+" CMAKE_GCC_REGEX_VERSION "${CMAKE_OPENCV_GCC_VERSION_FULL}")
285 # Split the three parts:
286 string(REGEX MATCHALL "[0-9]+" CMAKE_OPENCV_GCC_VERSIONS "${CMAKE_GCC_REGEX_VERSION}")
288 list(GET CMAKE_OPENCV_GCC_VERSIONS 0 CMAKE_OPENCV_GCC_VERSION_MAJOR)
289 list(GET CMAKE_OPENCV_GCC_VERSIONS 1 CMAKE_OPENCV_GCC_VERSION_MINOR)
291 set(CMAKE_OPENCV_GCC_VERSION ${CMAKE_OPENCV_GCC_VERSION_MAJOR}${CMAKE_OPENCV_GCC_VERSION_MINOR})
292 math(EXPR CMAKE_OPENCV_GCC_VERSION_NUM "${CMAKE_OPENCV_GCC_VERSION_MAJOR}*100 + ${CMAKE_OPENCV_GCC_VERSION_MINOR}")
293 message(STATUS "Detected version of GNU GCC: ${CMAKE_OPENCV_GCC_VERSION} (${CMAKE_OPENCV_GCC_VERSION_NUM})")
296 execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpmachine
297 OUTPUT_VARIABLE CMAKE_OPENCV_GCC_TARGET_MACHINE
298 OUTPUT_STRIP_TRAILING_WHITESPACE)
299 if(CMAKE_OPENCV_GCC_TARGET_MACHINE MATCHES "64")
305 # ----------------------------------------------------------------------------
306 # Detect Intel ICC compiler -- for -fPIC in 3rdparty ( UNIX ONLY ):
307 # see include/opencv/cxtypes.h file for related ICC & CV_ICC defines.
308 # NOTE: The system needs to determine if the '-fPIC' option needs to be added
309 # for the 3rdparty static libs being compiled. The CMakeLists.txt files
310 # in 3rdparty use the CV_ICC definition being set here to determine if
311 # the -fPIC flag should be used.
312 # ----------------------------------------------------------------------------
322 elseif(__INTEL_COMPILER)
323 set(CV_ICC __INTEL_COMPILER)
324 elseif(CMAKE_C_COMPILER MATCHES "icc")
325 set(CV_ICC icc_matches_c_compiler)
329 # ----------------------------------------------------------------------------
330 # CHECK FOR SYSTEM LIBRARIES, OPTIONS, ETC..
331 # ----------------------------------------------------------------------------
333 # Build/install (or not) some apps:
334 # ===================================================
335 set(BUILD_EXAMPLES OFF CACHE BOOL "Build all examples")
336 set(INSTALL_C_EXAMPLES OFF CACHE BOOL "Install C examples")
337 set(INSTALL_PYTHON_EXAMPLES OFF CACHE BOOL "Install Python examples")
339 set(INSTALL_ANDROID_EXAMPLES OFF CACHE BOOL "Install Android examples")
343 # ===================================================
345 set(BUILD_TESTS ON CACHE BOOL "Build tests")
347 set(BUILD_TESTS OFF CACHE BOOL "Build tests")
349 set(BUILD_PERF_TESTS ON CACHE BOOL "Build performance tests")
351 # Build 3rdparty libraries under unix
352 # ===================================================
354 set(OPENCV_BUILD_3RDPARTY_LIBS TRUE CACHE INTERNAL "Build 3rd party libraries")
356 set(OPENCV_BUILD_3RDPARTY_LIBS FALSE CACHE BOOL "Build 3rd party libraries")
360 include(OpenCVPCHSupport.cmake REQUIRED)
363 include(OpenCVModule.cmake REQUIRED)
365 include(OpenCVAndroidProject.cmake REQUIRED)
369 SET(USE_PRECOMPILED_HEADERS ON CACHE BOOL "Use precompiled headers")
371 SET(USE_PRECOMPILED_HEADERS OFF CACHE BOOL "Use precompiled headers" FORCE)
375 include(OpenCVFindPkgConfig.cmake OPTIONAL)
376 include(CheckFunctionExists)
377 include(CheckIncludeFile)
380 if(CMAKE_COMPILER_IS_GNUCXX)
381 set(ENABLE_PROFILING OFF CACHE BOOL "Enable profiling in the GCC compiler (Add flags: -g -pg)")
382 set(USE_OMIT_FRAME_POINTER ON CACHE BOOL "Enable -fomit-frame-pointer for GCC")
384 if(${CMAKE_SYSTEM_PROCESSOR} MATCHES amd64.*|x86_64.*)
387 if(${CMAKE_SYSTEM_PROCESSOR} MATCHES i686.*|i386.*|x86.*)
390 if(${CMAKE_SYSTEM_PROCESSOR} MATCHES powerpc.*)
391 set(ENABLE_POWERPC ON CACHE BOOL "Enable PowerPC for GCC")
395 # enable everything, since the available set of instructions is checked at runtime
396 #IF ("${CMAKE_GCC_REGEX_VERSION}" VERSION_GREATER 4.5)
397 SET(_USE_FAST_MATH OFF)
399 # SET(_USE_FAST_MATH ON)
401 set(USE_FAST_MATH ${_USE_FAST_MATH} CACHE BOOL "Enable -ffast-math (not recommended for GCC 4.6.x)")
402 set(ENABLE_SSE ON CACHE BOOL "Enable SSE instructions")
403 set(ENABLE_SSE2 ON CACHE BOOL "Enable SSE2 instructions")
404 set(ENABLE_SSE3 OFF CACHE BOOL "Enable SSE3 instructions")
405 set(ENABLE_SSSE3 OFF CACHE BOOL "Enable SSSE3 instructions")
406 set(ENABLE_SSE41 OFF CACHE BOOL "Enable SSE4.1 instructions")
407 set(ENABLE_SSE42 OFF CACHE BOOL "Enable SSE4.2 instructions")
412 set(ENABLE_SSE ON CACHE BOOL "Enable SSE instructions for MSVC")
413 set(ENABLE_SSE2 ON CACHE BOOL "Enable SSE2 instructions for MSVC")
414 if(CMAKE_C_COMPILER MATCHES "icc")
415 set(ENABLE_SSE3 OFF CACHE BOOL "Enable SSE3 instructions for ICC")
416 set(ENABLE_SSE4_1 OFF CACHE BOOL "Enable SSE4.1 instructions for ICC")
420 # allow fine grained control over which libraries not to link, even if
421 # they are available on the system
422 # ====================================================================
424 set(WITH_PNG ON CACHE BOOL "Include PNG support")
425 set(WITH_JPEG ON CACHE BOOL "Include JPEG support")
426 set(WITH_JASPER ON CACHE BOOL "Include JPEG2K support")
427 set(WITH_TIFF ON CACHE BOOL "Include TIFF support")
428 set(WITH_OPENEXR ON CACHE BOOL "Include ILM support via OpenEXR")
432 set(WITH_FFMPEG ON CACHE BOOL "Include FFMPEG support")
434 set(WITH_UNICAP OFF CACHE BOOL "Include Unicap support (GPL)")
435 set(WITH_GTK ON CACHE BOOL "Include GTK support")
436 set(WITH_GSTREAMER ON CACHE BOOL "Include Gstreamer support")
437 set(WITH_V4L ON CACHE BOOL "Include Video 4 Linux support")
438 set(WITH_XINE OFF CACHE BOOL "Include Xine support (GPL)")
440 set(WITH_PVAPI ON CACHE BOOL "Include Prosilica GigE support")
441 set(WITH_1394 ON CACHE BOOL "Include IEEE1394 support")
447 set(WITH_CARBON OFF CACHE BOOL "Use Carbon for UI instead of Cocoa")
448 set(WITH_QUICKTIME OFF CACHE BOOL "Use QuickTime for Video I/O insted of QTKit")
452 set(WITH_AVFOUNDATION ON CACHE BOOL "Use AVFoundation for Video I/O")
455 set(WITH_TBB OFF CACHE BOOL "Include Intel TBB support")
456 set(WITH_THREADING_FRAMEWORK OFF CACHE BOOL "Include Threading Framework support (lightweight analogue of TBB for ARM-s)")
457 set(WITH_IPP OFF CACHE BOOL "Include Intel IPP support")
458 set(WITH_EIGEN ON CACHE BOOL "Include Eigen2/Eigen3 support")
460 if( CMAKE_VERSION VERSION_GREATER "2.8")
461 set(WITH_CUDA ON CACHE BOOL "Include NVidia Cuda Runtime support")
462 set(WITH_CUFFT ON CACHE BOOL "Include NVidia Cuda Fast Fourier Transform (FFT) library support")
463 set(WITH_CUBLAS OFF CACHE BOOL "Include NVidia Cuda Basic Linear Algebra Subprograms (BLAS) library support")
465 set(WITH_CUDA OFF CACHE BOOL "Include NVidia Cuda Runtime support")
466 set(WITH_CUFFT OFF CACHE BOOL "Include NVidia Cuda Fast Fourier Transform (FFT) library support")
467 set(WITH_CUBLAS OFF CACHE BOOL "Include NVidia Cuda Basic Linear Algebra Subprograms (BLAS) library support")
470 set(WITH_OPENNI OFF CACHE BOOL "Include OpenNI support")
471 set(WITH_XIMEA OFF CACHE BOOL "Include XIMEA cameras support")
472 set(WITH_OPENGL OFF CACHE BOOL "Include OpenGL support")
476 # ===================================================
477 # Macros that checks if module have been installed.
478 # After it adds module to build and define
479 # constants passed as second arg
480 # ===================================================
482 macro(CHECK_MODULE module_name define)
485 set(ALIAS ALIASOF_${module_name})
486 set(ALIAS_FOUND ${ALIAS}_FOUND)
487 set(ALIAS_INCLUDE_DIRS ${ALIAS}_INCLUDE_DIRS)
488 set(ALIAS_LIBRARY_DIRS ${ALIAS}_LIBRARY_DIRS)
489 set(ALIAS_LIBRARIES ${ALIAS}_LIBRARIES)
491 PKG_CHECK_MODULES(${ALIAS} ${module_name})
495 foreach(P "${ALIAS_INCLUDE_DIRS}")
497 list(APPEND HIGHGUI_INCLUDE_DIRS ${${P}})
501 foreach(P "${ALIAS_LIBRARY_DIRS}")
503 list(APPEND HIGHGUI_LIBRARY_DIRS ${${P}})
507 list(APPEND HIGHGUI_LIBRARIES ${${ALIAS_LIBRARIES}})
515 CHECK_MODULE(gtk+-2.0 HAVE_GTK)
516 CHECK_MODULE(gthread-2.0 HAVE_GTHREAD)
518 CHECK_MODULE(gtkglext-1.0 HAVE_GTKGLEXT)
520 find_package(OpenGL QUIET)
523 set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${OPENGL_LIBRARIES})
524 include_directories(${OPENGL_INCLUDE_DIR})
530 set(HAVE_GTHREAD FALSE)
533 CHECK_MODULE(gstreamer-base-0.10 HAVE_GSTREAMER)
534 CHECK_MODULE(gstreamer-app-0.10 HAVE_GSTREAMER)
535 CHECK_MODULE(gstreamer-video-0.10 HAVE_GSTREAMER)
537 set(HAVE_GSTREAMER FALSE)
542 CHECK_MODULE(libunicap HAVE_UNICAP_)
543 CHECK_MODULE(libucil HAVE_UNICAP_UCIL)
544 if(HAVE_UNICAP_ AND HAVE_UNICAP_UCIL)
548 set(HAVE_UNICAP FALSE)
552 find_path(PVAPI_INCLUDE_PATH "PvApi.h"
553 PATHS "/usr/local/include" "/usr/include"
554 DOC "The path to PvAPI header")
555 if(PVAPI_INCLUDE_PATH)
562 CHECK_MODULE(libavcodec HAVE_FFMPEG_CODEC)
563 CHECK_MODULE(libavformat HAVE_FFMPEG_FORMAT)
564 CHECK_MODULE(libavutil HAVE_FFMPEG_UTIL)
565 CHECK_MODULE(libswscale HAVE_FFMPEG_SWSCALE)
566 CHECK_INCLUDE_FILE(libavformat/avformat.h HAVE_GENTOO_FFMPEG)
567 CHECK_INCLUDE_FILE(ffmpeg/avformat.h HAVE_FFMPEG_FFMPEG)
568 if(NOT HAVE_GENTOO_FFMPEG AND NOT HAVE_FFMPEG_FFMPEG)
569 if(EXISTS /usr/include/ffmpeg/libavformat/avformat.h OR HAVE_FFMPEG_SWSCALE)
570 set(HAVE_GENTOO_FFMPEG 1)
573 if(HAVE_FFMPEG_CODEC AND HAVE_FFMPEG_FORMAT AND HAVE_FFMPEG_UTIL)
574 if(HAVE_FFMPEG_SWSCALE OR NOT HAVE_GENTOO_FFMPEG)
578 # Find the bzip2 library because it is required on some systems
579 FIND_LIBRARY(BZIP2_LIBRARIES NAMES bz2 bzip2)
580 if(NOT BZIP2_LIBRARIES)
582 FIND_FILE(BZIP2_LIBRARIES NAMES libbz2.so.1 PATHS /lib)
587 CHECK_MODULE(libdc1394-2 HAVE_DC1394_2)
588 if(NOT HAVE_DC1394_2)
589 CHECK_MODULE(libdc1394 HAVE_DC1394)
592 set(HAVE_DC1394_2 FALSE)
593 set(HAVE_DC1394 FALSE)
597 CHECK_INCLUDE_FILE(alloca.h HAVE_ALLOCA_H)
598 CHECK_FUNCTION_EXISTS(alloca HAVE_ALLOCA)
599 CHECK_INCLUDE_FILE(unistd.h HAVE_UNISTD_H)
600 CHECK_INCLUDE_FILE(pthread.h HAVE_LIBPTHREAD)
603 CHECK_MODULE(libxine HAVE_XINE)
608 CHECK_MODULE(libv4l1 HAVE_LIBV4L)
609 CHECK_INCLUDE_FILE(linux/videodev.h HAVE_CAMV4L)
610 CHECK_INCLUDE_FILE(linux/videodev2.h HAVE_CAMV4L2)
612 set(HAVE_LIBV4L FALSE)
613 set(HAVE_CAMV4L FALSE)
614 set(HAVE_CAMV4L2 FALSE)
618 set(OPENCV_LINKER_LIBS dl m log)
619 elseif(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD" OR ${CMAKE_SYSTEM_NAME} MATCHES "NetBSD")
620 set(OPENCV_LINKER_LIBS m pthread)
622 set(OPENCV_LINKER_LIBS dl m pthread rt)
625 add_definitions(-DHAVE_ALLOCA -DHAVE_ALLOCA_H -DHAVE_LIBPTHREAD -DHAVE_UNISTD_H)
629 if(NOT OPENCV_BUILD_3RDPARTY_LIBS)
630 message(STATUS "NOT OPENCV_BUILD_3RDPARTY_LIBS **************************************************")
635 CHECK_INCLUDE_FILE(${PNG_PNG_INCLUDE_DIR}/png.h HAVE_PNG_H)
636 CHECK_INCLUDE_FILE(${PNG_PNG_INCLUDE_DIR}/libpng/png.h HAVE_LIBPNG_PNG_H)
644 set(TIFF_FOUND FALSE)
649 set(JASPER_FOUND FALSE)
654 set(JPEG_FOUND FALSE)
659 if(WITH_PNG AND NOT PNG_FOUND)
660 set(PNG_LIBRARIES libpng)
663 if(WITH_JPEG AND NOT JPEG_FOUND)
664 set(JPEG_LIBRARIES libjpeg)
667 if(WITH_TIFF AND NOT TIFF_FOUND)
668 set(TIFF_LIBRARIES libtiff)
671 if(WITH_JASPER AND NOT JASPER_FOUND)
672 set(JASPER_LIBRARIES libjasper)
676 set(ZLIB_LIBRARY zlib)
679 #message(STATUS "Graphic libraries: ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${TIFF_LIBRARIES} ${JASPER_LIBRARIES}")
682 include(OpenCVFindOpenEXR.cmake)
685 set(BUILD_DOCS ON CACHE BOOL "Build OpenCV Documentation")
688 include(OpenCVFindLATEX.cmake REQUIRED)
691 set(BUILD_NEW_PYTHON_SUPPORT ON CACHE BOOL "Build with Python support")
694 if ("${CMAKE_BUILD_TYPE}" STREQUAL "Debug")
695 set(BUILD_NEW_PYTHON_SUPPORT OFF)
700 set(BUILD_NEW_PYTHON_SUPPORT OFF)
703 # Always try to find python
704 # ===================================================
705 find_host_package(PythonInterp)
706 find_host_package(PythonLibs)
708 # cmake 2.4 (at least on Ubuntu 8.04 (hardy)) don't define PYTHONLIBS_FOUND
709 if(NOT PYTHONLIBS_FOUND AND PYTHON_INCLUDE_PATH)
710 set(PYTHONLIBS_FOUND ON)
713 execute_process(COMMAND ${PYTHON_EXECUTABLE} --version
714 ERROR_VARIABLE PYTHON_VERSION_FULL
715 OUTPUT_STRIP_TRAILING_WHITESPACE)
717 string(REGEX MATCH "[0-9]+.[0-9]+" PYTHON_VERSION_MAJOR_MINOR "${PYTHON_VERSION_FULL}")
719 execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "from distutils.sysconfig import *; print get_python_lib()"
720 RESULT_VARIABLE PYTHON_CVPY_PROCESS
721 OUTPUT_VARIABLE PYTHON_STD_PACKAGES_PATH
722 OUTPUT_STRIP_TRAILING_WHITESPACE)
723 if("${PYTHON_STD_PACKAGES_PATH}" MATCHES "site-packages")
724 set(PYTHON_PACKAGES_PATH lib/python${PYTHON_VERSION_MAJOR_MINOR}/site-packages CACHE PATH "Where to install the python packages.")
725 else() #debian based assumed, install to the dist-packages.
726 set(PYTHON_PACKAGES_PATH lib/python${PYTHON_VERSION_MAJOR_MINOR}/dist-packages CACHE PATH "Where to install the python packages.")
730 get_filename_component(PYTHON_PATH "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${PYTHON_VERSION_MAJOR_MINOR}\\InstallPath]" ABSOLUTE CACHE)
731 set(PYTHON_PACKAGES_PATH "${PYTHON_PATH}/Lib/site-packages")
734 IF ("${PYTHON_VERSION_MAJOR_MINOR}" VERSION_GREATER 2.4)
735 SET(PYTHON_EXECUTABLE ${PYTHON_EXECUTABLE} -B)
738 # Attempt to discover the NumPy include directory. If this succeeds, then build python API with NumPy
739 execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import os; os.environ['DISTUTILS_USE_SDK']='1'; import numpy.distutils; print numpy.distutils.misc_util.get_numpy_include_dirs()[0]"
740 RESULT_VARIABLE PYTHON_NUMPY_PROCESS
741 OUTPUT_VARIABLE PYTHON_NUMPY_INCLUDE_DIRS
742 OUTPUT_STRIP_TRAILING_WHITESPACE)
744 if(PYTHON_NUMPY_PROCESS EQUAL 0)
745 set(PYTHON_USE_NUMPY 1)
746 add_definitions(-D PYTHON_USE_NUMPY=1)
747 include_directories(AFTER ${PYTHON_NUMPY_INCLUDE_DIRS})
748 message(STATUS " Use NumPy headers from: ${PYTHON_NUMPY_INCLUDE_DIRS}")
750 set(PYTHON_USE_NUMPY 0)
753 execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import sphinx; print sphinx.__version__"
754 RESULT_VARIABLE SPHINX_PROCESS
755 OUTPUT_VARIABLE SPHINX_VERSION
756 OUTPUT_STRIP_TRAILING_WHITESPACE)
759 if(SPHINX_PROCESS EQUAL 0)
760 find_host_program(SPHINX_BUILD sphinx-build)
763 message(STATUS " Found Sphinx ${SPHINX_VERSION}: ${SPHINX_BUILD}")
768 # ===================================================
769 if (PYTHON_EXECUTABLE AND ANDROID AND ANDROID_NATIVE_API_LEVEL GREATER 7)
770 option(BUILD_JAVA_SUPPORT "Build with Java support" TRUE)
773 if (BUILD_JAVA_SUPPORT)
774 file(TO_CMAKE_PATH "$ENV{ANT_DIR}" ANT_DIR_ENV_PATH)
775 file(TO_CMAKE_PATH "$ENV{ProgramFiles}" ProgramFiles_ENV_PATH)
778 file(TO_CMAKE_PATH "$ENV{ANDROID_SDK}" ANDROID_SDK_ENV_PATH)
781 find_host_program(ANDROID_EXECUTABLE
782 NAMES android.bat android
783 PATHS "${ANDROID_SDK_ENV_PATH}/tools/"
784 "${ProgramFiles_ENV_PATH}/Android/android-sdk/tools/"
785 "/opt/android-sdk/tools/"
786 "/opt/android-sdk-linux_x86/tools/"
787 "/opt/android-sdk-mac_x86/tools/"
788 "/opt/android-sdk-linux_86/tools/"
789 "/opt/android-sdk-mac_86/tools/"
791 if(ANDROID_EXECUTABLE)
792 message(STATUS " Found android tool: ${ANDROID_EXECUTABLE}")
794 get_filename_component(ANDROID_SDK_TOOLS_PATH "${ANDROID_EXECUTABLE}" PATH)
796 #read source.properties
797 if (EXISTS "${ANDROID_SDK_TOOLS_PATH}/source.properties")
798 file(STRINGS "${ANDROID_SDK_TOOLS_PATH}/source.properties" ANDROID_SDK_TOOLS_SOURCE_PROPERTIES_LINES REGEX "^[ ]*[^#].*$")
799 foreach(line ${ANDROID_SDK_TOOLS_SOURCE_PROPERTIES_LINES})
800 string(REPLACE "\\:" ":" line ${line})
801 string(REPLACE "=" ";" line ${line})
802 list(GET line 0 line_name)
803 list(GET line 1 line_value)
804 string(REPLACE "." "_" line_name ${line_name})
805 SET(ANDROID_TOOLS_${line_name} "${line_value}")
806 MARK_AS_ADVANCED(ANDROID_TOOLS_${line_name})
809 if (NOT ANDROID_TOOLS_Pkg_Revision)
810 SET(ANDROID_TOOLS_Pkg_Revision "Unknown")
811 MARK_AS_ADVANCED(ANDROID_TOOLS_Pkg_Revision)
813 if (NOT ANDROID_TOOLS_Pkg_Desc)
814 SET(ANDROID_TOOLS_Pkg_Desc "Android SDK Tools, revision ${ANDROID_TOOLS_Pkg_Revision}.")
815 if (NOT ANDROID_TOOLS_Pkg_Revision GREATER 11)
816 SET(ANDROID_TOOLS_Pkg_Desc "${ANDROID_TOOLS_Pkg_Desc} It is recommended to update your SDK tools to revision 12 or newer.")
818 MARK_AS_ADVANCED(ANDROID_TOOLS_Pkg_Desc)
821 #get installed targets
822 execute_process(COMMAND ${ANDROID_EXECUTABLE} list target
823 RESULT_VARIABLE ANDROID_PROCESS
824 OUTPUT_VARIABLE ANDROID_SDK_TARGETS_FULL
825 ERROR_VARIABLE ANDROID_PROCESS_ERRORS
826 OUTPUT_STRIP_TRAILING_WHITESPACE)
827 string(REGEX MATCHALL "(^|\n)id: [0-9]+ or \"([^\n]+[0-9+])\"(\n|$)" ANDROID_SDK_TARGETS_FULL "${ANDROID_SDK_TARGETS_FULL}")
829 SET(ANDROID_SDK_TARGETS)
830 if (ANDROID_PROCESS EQUAL 0)
831 foreach(line ${ANDROID_SDK_TARGETS_FULL})
832 string(REGEX REPLACE "(^|\n)id: [0-9]+ or \"([^\n]+[0-9+])\"(\n|$)" "\\2" line "${line}")
833 list(APPEND ANDROID_SDK_TARGETS "${line}")
837 # detect ANDROID_SDK_TARGET if no target is provided by user
838 if (NOT ANDROID_SDK_TARGET)
839 set(desired_android_target_level ${ANDROID_NATIVE_API_LEVEL})
840 if (desired_android_target_level LESS 8)
841 set(desired_android_target_level 8)
843 if (ANDROID_PROCESS EQUAL 0)
844 math(EXPR desired_android_target_level_1 "${desired_android_target_level}-1")
846 foreach(target ${ANDROID_SDK_TARGETS})
847 string(REGEX MATCH "[0-9]+$" target_level "${target}")
848 if (target_level GREATER desired_android_target_level_1)
849 set(ANDROID_SDK_TARGET "${target}")
854 set(ANDROID_SDK_TARGET android-${desired_android_target_level})
855 message(WARNING "Could not retrieve list of installed Android targets. Will try to use \"${ANDROID_SDK_TARGET}\" target")
859 SET(ANDROID_SDK_TARGET ${ANDROID_SDK_TARGET} CACHE STRING "SDK target for Android tests and samples")
860 if (ANDROID_PROCESS EQUAL 0 AND CMAKE_VERSION VERSION_GREATER "2.8")
861 set_property( CACHE ANDROID_SDK_TARGET PROPERTY STRINGS ${ANDROID_SDK_TARGETS} )
863 string(REGEX MATCH "[0-9]+$" ANDROID_SDK_TARGET_LEVEL "${ANDROID_SDK_TARGET}")
868 find_host_program(ANT_EXECUTABLE NAMES ant.bat ant
869 PATHS "${ANT_DIR_ENV_PATH}/bin"
870 "${ProgramFiles_ENV_PATH}/apache-ant/bin"
873 execute_process(COMMAND ${ANT_EXECUTABLE} -version
874 OUTPUT_VARIABLE ANT_VERSION_FULL
875 OUTPUT_STRIP_TRAILING_WHITESPACE)
876 string(REGEX MATCH "[0-9]+.[0-9]+.[0-9]+" ANT_VERSION "${ANT_VERSION_FULL}")
878 message(STATUS " Found apache ant ${ANT_VERSION}: ${ANT_EXECUTABLE}")
881 if (ANDROID_EXECUTABLE AND ANT_EXECUTABLE AND (ANT_VERSION VERSION_GREATER 1.7) AND (ANDROID_SDK_TARGET_LEVEL GREATER 7))
882 SET(CAN_BUILD_ANDROID_PROJECTS TRUE)
884 SET(CAN_BUILD_ANDROID_PROJECTS FALSE)
888 if(CAN_BUILD_ANDROID_PROJECTS)
889 SET(BUILD_ANDROID_EXAMPLES TRUE CACHE BOOL "Build examples for Android platform")
893 ############################### QT ################################
895 set(WITH_QT OFF CACHE BOOL "Build with Qt Backend support")
898 set(HAVE_QT_OPENGL 0)
904 add_definitions(-DHAVE_QT) #We need to define te macro this way, using cvconfig.h.cmake does not work
907 find_package (OpenGL QUIET)
908 if (QT_QTOPENGL_FOUND AND OPENGL_FOUND)
910 set(HAVE_QT_OPENGL 1)
911 add_definitions(-DHAVE_QT_OPENGL)
912 set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${OPENGL_LIBRARIES})
918 ############################### TBB ################################
921 if (UNIX AND NOT APPLE AND NOT ANDROID)
922 PKG_CHECK_MODULES(TBB tbb)
926 if(NOT ${TBB_INCLUDE_DIRS} STREQUAL "")
927 include_directories(${TBB_INCLUDE_DIRS})
929 link_directories(${TBB_LIBRARY_DIRS})
930 set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${TBB_LIBRARIES})
935 set(TBB_DEFAULT_INCLUDE_DIRS "/opt/intel/tbb" "/usr/local/include" "/usr/include" "C:/Program Files/Intel/TBB" "C:/Program Files (x86)/Intel/TBB" "C:/Program Files (x86)/TBB" "${CMAKE_INSTALL_PREFIX}/include")
937 find_path(TBB_INCLUDE_DIR "tbb/tbb.h" PATHS ${TBB_DEFAULT_INCLUDE_DIRS} DOC "The path to TBB headers")
940 set(TBB_LIB_DIR "${TBB_INCLUDE_DIR}/../lib" CACHE PATH "Full path of TBB library directory")
941 link_directories("${TBB_LIB_DIR}")
944 set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} libtbb.dylib)
946 set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} tbb)
947 add_definitions(-DTBB_USE_GCC_BUILTINS)
949 set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} tbb)
951 if (CMAKE_COMPILER_IS_GNUCXX)
952 set(TBB_LIB_DIR "${TBB_INCLUDE_DIR}/../lib" CACHE PATH "Full path of TBB library directory")
953 link_directories("${TBB_LIB_DIR}")
954 set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} tbb)
956 get_filename_component(_TBB_LIB_PATH "${TBB_INCLUDE_DIR}/../lib" ABSOLUTE)
958 if(${CMAKE_SYSTEM_PROCESSOR} MATCHES amd64*|x86_64* OR MSVC64)
959 set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/intel64")
960 elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES x86*|i386*|i686*)
961 set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/ia32")
965 set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/vc8")
967 set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/vc9")
969 set(_TBB_LIB_PATH "${_TBB_LIB_PATH}/vc10")
971 set(TBB_LIB_DIR "${_TBB_LIB_PATH}" CACHE PATH "Full path of TBB library directory")
972 link_directories("${TBB_LIB_DIR}")
977 if(NOT "${TBB_INCLUDE_DIR}" STREQUAL "")
978 include_directories("${TBB_INCLUDE_DIR}")
984 #Threading Framework -- temporary decision for ARM-s instead of TBB
985 set(HAVE_THREADING_FRAMEWORK)
986 if (NOT HAVE_TBB AND WITH_THREADING_FRAMEWORK)
987 file(GLOB THREADING_FRAMEWORK_HEADER "${OpenCV_SOURCE_DIR}/modules/core/include/opencv2/core/threading_framework.hpp")
988 file(GLOB THREADING_FRAMEWORK_SOURCE "${OpenCV_SOURCE_DIR}/modules/core/src/threading_framework.cpp")
990 if(THREADING_FRAMEWORK_HEADER AND THREADING_FRAMEWORK_SOURCE)
991 set(HAVE_THREADING_FRAMEWORK 1)
994 set(HAVE_THREADING_FRAMEWORK 1)
998 ############################ Intel IPP #############################
1002 include(OpenCVFindIPP.cmake)
1006 add_definitions(-DHAVE_IPP)
1007 include_directories(${IPP_INCLUDE_DIRS})
1008 link_directories(${IPP_LIBRARY_DIRS})
1009 set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${IPP_LIBRARIES})
1013 ############################### CUDA ################################
1016 find_package(CUDA 4.0)
1029 message(STATUS "CUDA detected: " ${CUDA_VERSION})
1031 set(CUDA_ARCH_BIN "1.1 1.2 1.3 2.0 2.1(2.0)" CACHE STRING "Specify 'real' GPU architectures to build binaries for, BIN(PTX) format is supported")
1032 set(CUDA_ARCH_PTX "2.0" CACHE STRING "Specify 'virtual' PTX architectures to build PTX intermediate code for")
1034 string(REGEX REPLACE "\\." "" ARCH_BIN_NO_POINTS "${CUDA_ARCH_BIN}")
1035 string(REGEX REPLACE "\\." "" ARCH_PTX_NO_POINTS "${CUDA_ARCH_PTX}")
1037 # Ckeck if user specified 1.0 compute capability: we don't support it
1038 string(REGEX MATCH "1.0" HAS_ARCH_10 "${CUDA_ARCH_BIN} ${CUDA_ARCH_PTX}")
1039 set(CUDA_ARCH_BIN_OR_PTX_10 0)
1040 if(NOT ${HAS_ARCH_10} STREQUAL "")
1041 set(CUDA_ARCH_BIN_OR_PTX_10 1)
1044 # NVCC flags to be set
1045 set(NVCC_FLAGS_EXTRA "")
1047 # These vars will be passed into the templates
1048 set(OPENCV_CUDA_ARCH_BIN "")
1049 set(OPENCV_CUDA_ARCH_PTX "")
1050 set(OPENCV_CUDA_ARCH_FEATURES "")
1052 # Tell NVCC to add binaries for the specified GPUs
1053 string(REGEX MATCHALL "[0-9()]+" ARCH_LIST "${ARCH_BIN_NO_POINTS}")
1054 foreach(ARCH IN LISTS ARCH_LIST)
1055 if (ARCH MATCHES "([0-9]+)\\(([0-9]+)\\)")
1056 # User explicitly specified PTX for the concrete BIN
1057 set(NVCC_FLAGS_EXTRA ${NVCC_FLAGS_EXTRA} -gencode arch=compute_${CMAKE_MATCH_2},code=sm_${CMAKE_MATCH_1})
1058 set(OPENCV_CUDA_ARCH_BIN "${OPENCV_CUDA_ARCH_BIN} ${CMAKE_MATCH_1}")
1059 set(OPENCV_CUDA_ARCH_FEATURES "${OPENCV_CUDA_ARCH_FEATURES} ${CMAKE_MATCH_2}")
1061 # User didn't explicitly specify PTX for the concrete BIN, we assume PTX=BIN
1062 set(NVCC_FLAGS_EXTRA ${NVCC_FLAGS_EXTRA} -gencode arch=compute_${ARCH},code=sm_${ARCH})
1063 set(OPENCV_CUDA_ARCH_BIN "${OPENCV_CUDA_ARCH_BIN} ${ARCH}")
1064 set(OPENCV_CUDA_ARCH_FEATURES "${OPENCV_CUDA_ARCH_FEATURES} ${ARCH}")
1068 # Tell NVCC to add PTX intermediate code for the specified architectures
1069 string(REGEX MATCHALL "[0-9]+" ARCH_LIST "${ARCH_PTX_NO_POINTS}")
1070 foreach(ARCH IN LISTS ARCH_LIST)
1071 set(NVCC_FLAGS_EXTRA ${NVCC_FLAGS_EXTRA} -gencode arch=compute_${ARCH},code=compute_${ARCH})
1072 set(OPENCV_CUDA_ARCH_PTX "${OPENCV_CUDA_ARCH_PTX} ${ARCH}")
1073 set(OPENCV_CUDA_ARCH_FEATURES "${OPENCV_CUDA_ARCH_FEATURES} ${ARCH}")
1076 # These vars will be processed in other scripts
1077 set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} ${NVCC_FLAGS_EXTRA})
1078 set(OpenCV_CUDA_CC "${NVCC_FLAGS_EXTRA}")
1080 message(STATUS "CUDA NVCC target flags: ${CUDA_NVCC_FLAGS}")
1082 unset(CUDA_ARCH_BIN CACHE)
1083 unset(CUDA_ARCH_PTX CACHE)
1088 ############################### OpenNI ################################
1089 set(HAVE_OPENNI FALSE)
1090 set(HAVE_OPENNI_PRIME_SENSOR_MODULE FALSE)
1093 include(OpenCVFindOpenNI.cmake)
1096 ############################### XIMEA ################################
1097 set(HAVE_XIMEA FALSE)
1100 include(OpenCVFindXimea.cmake)
1104 set(HAVE_XIMEA TRUE)
1107 ############################## Eigen ##############################
1110 find_path(EIGEN_INCLUDE_PATH "Eigen/Core"
1111 PATHS "/usr/local/include/eigen2" "/opt/include/eigen2" "/usr/include/eigen2"
1112 "/usr/local/include/eigen3" "/opt/include/eigen3" "/usr/include/eigen3"
1113 DOC "The path to Eigen2/Eigen3 headers")
1114 if(EIGEN_INCLUDE_PATH)
1115 include_directories(${EIGEN_INCLUDE_PATH})
1121 ################## Extra HighGUI libs on Windows ###################
1124 set(WITH_VIDEOINPUT ON CACHE BOOL "Build HighGUI with DirectShow support")
1125 set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} comctl32 gdi32 ole32)
1128 set(HAVE_VIDEOINPUT 1)
1132 set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} vfw32)
1137 set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} msvfw32 avifil32 avicap32 winmm)
1139 set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} vfw32 winmm)
1143 if(WITH_OPENGL AND NOT HAVE_QT_OPENGL)
1144 find_package(OpenGL QUIET)
1148 set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${OPENGL_LIBRARIES})
1149 include_directories(${OPENGL_INCLUDE_DIR})
1154 ############## Android source tree for native camera ###############
1155 if(ANDROID AND ANDROID_NATIVE_API_LEVEL GREATER 7)
1156 option(WITH_ANDROID_CAMERA "Build with native Android camera support" TRUE)
1158 SET (ANDROID_SOURCE_TREE "ANDROID_SOURCE_TREE-NOTFOUND" CACHE PATH
1159 "Path to Android source tree.
1160 Set this variable to path to your Android sources to compile
1161 libnative_camera_rx.x.x.so for your Android")
1162 SET(BUILD_ANDROID_CAMERA_WRAPPER OFF)
1163 if (ANDROID_SOURCE_TREE)
1164 FILE(STRINGS "${ANDROID_SOURCE_TREE}/development/sdk/platform_source.properties" ANDROID_VERSION REGEX "Platform\\.Version=[0-9]+\\.[0-9]+(\\.[0-9]+)?" )
1165 string(REGEX REPLACE "Platform\\.Version=([0-9]+\\.[0-9]+(\\.[0-9]+)?)" "\\1" ANDROID_VERSION "${ANDROID_VERSION}")
1166 if (ANDROID_VERSION MATCHES "^[0-9]+\\.[0-9]+$")
1167 SET(ANDROID_VERSION "${ANDROID_VERSION}.0")
1169 if(NOT "${ANDROID_VERSION}" STREQUAL "")
1170 SET(BUILD_ANDROID_CAMERA_WRAPPER ON)
1173 MARK_AS_ADVANCED(ANDROID_SOURCE_TREE)
1176 # ----------------------------------------------------------------------------
1177 # UPDATE CONFIG FILES & SCRIPTS:
1179 # CONFIGURE_FILE(InputFile OutputFile [COPYONLY] [ESCAPE_QUOTES] [@ONLY])
1180 # If @ONLY is specified, only variables of the form @VAR@ will be
1181 # replaces and ${VAR} will be ignored.
1183 # A directory will be created for each platform so the "cvconfig.h" file is
1184 # not overwritten if cmake generates code in the same path.
1185 # ----------------------------------------------------------------------------
1186 add_definitions(-DHAVE_CVCONFIG_H)
1188 set(OPENCV_CONFIG_FILE_INCLUDE_DIR "${CMAKE_BINARY_DIR}/" CACHE PATH "Where to create the platform-dependant cvconfig.h")
1190 message(STATUS "Parsing 'cvconfig.h.cmake'")
1191 configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cvconfig.h.cmake" "${OPENCV_CONFIG_FILE_INCLUDE_DIR}/cvconfig.h")
1193 # ---------------------------------------------------------------------------
1194 # The C+//0 include & link directories:
1195 # ---------------------------------------------------------------------------
1196 include_directories("."
1197 "${OPENCV_CONFIG_FILE_INCLUDE_DIR}"
1198 "${CMAKE_CURRENT_SOURCE_DIR}/include"
1199 "${CMAKE_CURRENT_SOURCE_DIR}/include/opencv"
1202 # ----------------------------------------------------------------------------
1203 # Set the maximum level of warnings:
1204 # ----------------------------------------------------------------------------
1205 # Should be set to true for development
1206 set(OPENCV_WARNINGS_ARE_ERRORS OFF CACHE BOOL "Treat warnings as errors")
1207 if (WIN32 AND ${CMAKE_GENERATOR} MATCHES "(MinGW)|(MSYS)")
1208 set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG" CACHE STRING "")
1211 set(EXTRA_C_FLAGS "")
1212 set(EXTRA_C_FLAGS_RELEASE "")
1213 set(EXTRA_C_FLAGS_DEBUG "")
1214 set(EXTRA_EXE_LINKER_FLAGS "")
1215 set(EXTRA_EXE_LINKER_FLAGS_RELEASE "")
1216 set(EXTRA_EXE_LINKER_FLAGS_DEBUG "")
1219 set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE /D _SCL_SECURE_NO_WARNINGS")
1220 # 64-bit portability warnings, in MSVC8
1222 set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} /Wp64")
1225 # set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} /D _BIND_TO_CURRENT_CRT_VERSION=1 /D _BIND_TO_CURRENT_VCLIBS_VERSION=1")
1228 if(BUILD_WITH_DEBUG_INFO)
1229 set(EXTRA_EXE_LINKER_FLAGS_RELEASE "${EXTRA_EXE_LINKER_FLAGS_RELEASE} /debug")
1232 # Remove unreferenced functions: function level linking
1233 set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} /Gy")
1234 if(BUILD_WITH_DEBUG_INFO)
1235 set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} /Zi")
1239 if(CMAKE_COMPILER_IS_GNUCXX)
1240 # High level of warnings.
1241 set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Wall")
1243 # The -Wno-long-long is required in 64bit systems when including sytem headers.
1245 set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Wno-long-long")
1249 if(UNIX AND NOT ANDROID)
1250 set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -pthread")
1253 if(OPENCV_WARNINGS_ARE_ERRORS)
1254 set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Werror")
1257 if(X86 AND NOT MINGW64 AND NOT X86_64 AND NOT APPLE)
1258 set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -march=i686")
1261 # Other optimizations
1262 if(USE_OMIT_FRAME_POINTER)
1263 set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -fomit-frame-pointer")
1266 set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -ffast-math")
1269 set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -mcpu=G3 -mtune=G5")
1272 set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -msse")
1275 set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -msse2")
1277 # SSE3 and further should be disabled under MingW because it generates compiler errors
1280 set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -msse3")
1283 if(${CMAKE_OPENCV_GCC_VERSION_NUM} GREATER 402)
1284 set(HAVE_GCC43_OR_NEWER 1)
1286 if(${CMAKE_OPENCV_GCC_VERSION_NUM} GREATER 401)
1287 set(HAVE_GCC42_OR_NEWER 1)
1290 if(HAVE_GCC42_OR_NEWER OR APPLE)
1292 set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -mssse3")
1294 if(HAVE_GCC43_OR_NEWER)
1296 set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -msse4.1")
1299 set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -msse4.2")
1306 if(NOT APPLE AND CMAKE_SIZEOF_VOID_P EQUAL 4)
1307 set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -mfpmath=387")
1312 if(ENABLE_PROFILING)
1313 set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -pg -g")
1315 # Remove unreferenced functions: function level linking
1316 set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -ffunction-sections")
1319 set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -DNDEBUG")
1320 set(EXTRA_C_FLAGS_DEBUG "${EXTRA_C_FLAGS_DEBUG} -O0 -DDEBUG -D_DEBUG")
1321 if(BUILD_WITH_DEBUG_INFO)
1322 set(EXTRA_C_FLAGS_DEBUG "${EXTRA_C_FLAGS_DEBUG} -ggdb3")
1327 # 64-bit MSVC compiler uses SSE/SSE2 by default
1330 set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} /arch:SSE")
1333 set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} /arch:SSE2")
1337 set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} /arch:SSE3")
1340 set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} /arch:SSE4.1")
1342 if (ENABLE_SSE OR ENABLE_SSE2 OR ENABLE_SSE3 OR ENABLE_SSE4_1)
1343 set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} /Oi")
1347 # Extra link libs if the user selects building static libs:
1348 if(NOT BUILD_SHARED_LIBS AND CMAKE_COMPILER_IS_GNUCXX AND NOT ANDROID)
1349 # Android does not need these settings because they are already set by toolchain file
1350 set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} stdc++)
1351 set(OPENCV_EXTRA_C_FLAGS "-fPIC ${OPENCV_EXTRA_C_FLAGS}")
1354 # Add user supplied extra options (optimization, etc...)
1355 # ==========================================================
1356 set(OPENCV_EXTRA_C_FLAGS "${OPENCV_EXTRA_C_FLAGS}" CACHE STRING "Extra compiler options")
1357 set(OPENCV_EXTRA_C_FLAGS_RELEASE "${OPENCV_EXTRA_C_FLAGS_RELEASE}" CACHE STRING "Extra compiler options for Release build")
1358 set(OPENCV_EXTRA_C_FLAGS_DEBUG "${OPENCV_EXTRA_C_FLAGS_DEBUG}" CACHE STRING "Extra compiler options for Debug build")
1359 set(OPENCV_EXTRA_EXE_LINKER_FLAGS "${OPENCV_EXTRA_EXE_LINKER_FLAGS}" CACHE STRING "Extra linker flags" FORCE)
1360 set(OPENCV_EXTRA_EXE_LINKER_FLAGS_RELEASE "${OPENCV_EXTRA_EXE_LINKER_FLAGS_RELEASE}" CACHE STRING "Extra linker flags for Release build" FORCE)
1361 set(OPENCV_EXTRA_EXE_LINKER_FLAGS_DEBUG "${OPENCV_EXTRA_EXE_LINKER_FLAGS_DEBUG}" CACHE STRING "Extra linker flags for Debug build" FORCE)
1363 #combine all "extra" options
1364 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_C_FLAGS} ${OPENCV_EXTRA_C_FLAGS}")
1365 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_C_FLAGS} ${OPENCV_EXTRA_C_FLAGS}")
1366 set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${EXTRA_C_FLAGS_RELEASE} ${OPENCV_EXTRA_C_FLAGS_RELEASE}")
1367 set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${EXTRA_C_FLAGS_RELEASE} ${OPENCV_EXTRA_C_FLAGS_RELEASE}")
1368 set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${EXTRA_C_FLAGS_DEBUG} ${OPENCV_EXTRA_C_FLAGS_DEBUG}")
1369 set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${EXTRA_C_FLAGS_DEBUG} ${OPENCV_EXTRA_C_FLAGS_DEBUG}")
1370 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${EXTRA_EXE_LINKER_FLAGS} ${OPENCV_EXTRA_EXE_LINKER_FLAGS}")
1371 set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} ${EXTRA_EXE_LINKER_FLAGS_RELEASE} ${OPENCV_EXTRA_EXE_LINKER_FLAGS_RELEASE}")
1372 set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${EXTRA_EXE_LINKER_FLAGS_DEBUG} ${OPENCV_EXTRA_EXE_LINKER_FLAGS_DEBUG}")
1374 # In case of Makefiles if the user does not setup CMAKE_BUILD_TYPE, assume it's Release:
1375 if (${CMAKE_GENERATOR} MATCHES ".*Makefiles" AND "${CMAKE_BUILD_TYPE}" STREQUAL "")
1376 set(CMAKE_BUILD_TYPE Release)
1380 # avoid warnings from MSVC about overriding the /W* option
1381 # we replace /W3 with /W4 only for C++ files,
1382 # since all the 3rd-party libraries OpenCV uses are in C,
1383 # and we do not care about their warnings.
1384 string(REPLACE "/W3" "/W4" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
1385 string(REPLACE "/W3" "/W4" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
1386 string(REPLACE "/W3" "/W4" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
1388 # allow extern "C" functions throw exceptions
1389 string(REPLACE "/EHsc" "/EHsc-" CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
1390 string(REPLACE "/EHsc" "/EHsc-" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
1391 string(REPLACE "/EHsc" "/EHsc-" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
1392 string(REPLACE "/EHsc" "/EHsc-" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
1393 string(REPLACE "/EHsc" "/EHsc-" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
1394 string(REPLACE "/EHsc" "/EHsc-" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
1396 string(REPLACE "/Zm1000" " " CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
1397 string(REPLACE "/Zm1000" " " CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
1400 if("${CMAKE_CONFIGURE_LDFLAGS}")
1401 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_CONFIGURE_LDFLAGS}")
1402 endif("${CMAKE_CONFIGURE_LDFLAGS}")
1404 # --------------------------------------------------------------------------------------------
1405 # Installation for CMake Module: OpenCVConfig.cmake
1406 # Part 1/3: ${BIN_DIR}/OpenCVConfig.cmake -> For use *without* "make install"
1407 # Part 2/3: ${BIN_DIR}/unix-install/OpenCVConfig.cmake -> For use with "make install"
1408 # Part 3/3: ${BIN_DIR}/win-install/OpenCVConfig.cmake -> For use within binary installers/packages
1409 # -------------------------------------------------------------------------------------------
1411 # -------------------------------------------------------------------------------------------
1412 # Part 1/3: ${BIN_DIR}/OpenCVConfig.cmake -> For use *without* "make install"
1413 # -------------------------------------------------------------------------------------------
1414 set(CMAKE_INCLUDE_DIRS_CONFIGCMAKE "\"${OPENCV_CONFIG_FILE_INCLUDE_DIR}\" \"${CMAKE_CURRENT_SOURCE_DIR}/include\" \"${CMAKE_CURRENT_SOURCE_DIR}/include/opencv\"")
1415 set(CMAKE_OPENCV2_INCLUDE_DIRS_CONFIGCMAKE "${CMAKE_CURRENT_SOURCE_DIR}")
1416 set(CMAKE_LIB_DIRS_CONFIGCMAKE "${LIBRARY_OUTPUT_PATH}")
1417 set(CMAKE_3RDPARTY_LIB_DIRS_CONFIGCMAKE "\"${CMAKE_BINARY_DIR}/3rdparty/${OPENCV_LIB_INSTALL_PATH}\"")
1419 configure_file("${CMAKE_CURRENT_SOURCE_DIR}/OpenCVConfig.cmake.in" "${CMAKE_BINARY_DIR}/OpenCVConfig.cmake" IMMEDIATE @ONLY)
1420 #support for version checking when finding opencv. find_package(OpenCV 2.3.1 EXACT) should now work.
1421 configure_file("${CMAKE_CURRENT_SOURCE_DIR}/OpenCVConfig-version.cmake.in" "${CMAKE_BINARY_DIR}/OpenCVConfig-version.cmake" IMMEDIATE @ONLY)
1422 # --------------------------------------------------------------------------------------------
1423 # Part 2/3: ${BIN_DIR}/unix-install/OpenCVConfig.cmake -> For use *with* "make install"
1424 # -------------------------------------------------------------------------------------------
1425 set(CMAKE_INCLUDE_DIRS_CONFIGCMAKE "\"\${OpenCV_INSTALL_PATH}/${OPENCV_INCLUDE_PREFIX}/opencv" "\${OpenCV_INSTALL_PATH}/${OPENCV_INCLUDE_PREFIX}\"")
1427 set(CMAKE_OPENCV2_INCLUDE_DIRS_CONFIGCMAKE "")
1429 set(CMAKE_LIB_DIRS_CONFIGCMAKE "\"\${OpenCV_INSTALL_PATH}/libs/\${ANDROID_NDK_ABI_NAME}\"")
1430 set(CMAKE_3RDPARTY_LIB_DIRS_CONFIGCMAKE "\"\${OpenCV_INSTALL_PATH}/share/OpenCV/3rdparty/libs/\${ANDROID_NDK_ABI_NAME}\"")
1432 set(CMAKE_LIB_DIRS_CONFIGCMAKE "\"\${OpenCV_INSTALL_PATH}/${OPENCV_LIB_INSTALL_PATH}\"")
1433 set(CMAKE_3RDPARTY_LIB_DIRS_CONFIGCMAKE "\"\${OpenCV_INSTALL_PATH}/share/OpenCV/3rdparty/${OPENCV_LIB_INSTALL_PATH}\"")
1434 if(OPENCV_MANGLED_INSTALL_PATHS)
1435 set(CMAKE_3RDPARTY_LIB_DIRS_CONFIGCMAKE "\"\${OpenCV_INSTALL_PATH}/share/OpenCV-${OPENCV_VERSION}/3rdparty/${OPENCV_LIB_INSTALL_PATH}\"")
1439 configure_file("${CMAKE_CURRENT_SOURCE_DIR}/OpenCVConfig.cmake.in" "${CMAKE_BINARY_DIR}/unix-install/OpenCVConfig.cmake" IMMEDIATE @ONLY)
1440 configure_file("${CMAKE_CURRENT_SOURCE_DIR}/OpenCVConfig-version.cmake.in" "${CMAKE_BINARY_DIR}/unix-install/OpenCVConfig-version.cmake" IMMEDIATE @ONLY)
1443 #http://www.vtk.org/Wiki/CMake/Tutorials/Packaging reference
1444 # For a command "find_package(<name> [major[.minor]] [EXACT] [REQUIRED|QUIET])"
1445 # cmake will look in the following dir on unix:
1446 # <prefix>/(share|lib)/cmake/<name>*/ (U)
1447 # <prefix>/(share|lib)/<name>*/ (U)
1448 # <prefix>/(share|lib)/<name>*/(cmake|CMake)/ (U)
1449 if(OPENCV_MANGLED_INSTALL_PATHS)
1450 install(FILES ${CMAKE_BINARY_DIR}/unix-install/OpenCVConfig.cmake DESTINATION share/OpenCV-${OPENCV_VERSION}/)
1451 install(FILES ${CMAKE_BINARY_DIR}/unix-install/OpenCVConfig-version.cmake DESTINATION share/OpenCV-${OPENCV_VERSION}/)
1453 install(FILES "${CMAKE_BINARY_DIR}/unix-install/OpenCVConfig.cmake" DESTINATION share/OpenCV/)
1454 install(FILES ${CMAKE_BINARY_DIR}/unix-install/OpenCVConfig-version.cmake DESTINATION share/OpenCV/)
1459 install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/android/android.toolchain.cmake" DESTINATION share/OpenCV)
1462 # --------------------------------------------------------------------------------------------
1463 # Part 3/3: ${BIN_DIR}/win-install/OpenCVConfig.cmake -> For use within binary installers/packages
1464 # -------------------------------------------------------------------------------------------
1466 set(CMAKE_INCLUDE_DIRS_CONFIGCMAKE "\"\${OpenCV_CONFIG_PATH}/include\" \"\${OpenCV_CONFIG_PATH}/include/opencv\"")
1467 set(CMAKE_OPENCV2_INCLUDE_DIRS_CONFIGCMAKE "")
1468 set(CMAKE_LIB_DIRS_CONFIGCMAKE "\"\${OpenCV_CONFIG_PATH}/${OPENCV_LIB_INSTALL_PATH}\"")
1469 set(CMAKE_3RDPARTY_LIB_DIRS_CONFIGCMAKE "\"\${OpenCV_CONFIG_PATH}/share/OpenCV/3rdparty/${OPENCV_LIB_INSTALL_PATH}\"")
1471 exec_program(mkdir ARGS "-p \"${CMAKE_BINARY_DIR}/win-install/\"" OUTPUT_VARIABLE RET_VAL)
1472 configure_file("${CMAKE_CURRENT_SOURCE_DIR}/OpenCVConfig.cmake.in" "${CMAKE_BINARY_DIR}/win-install/OpenCVConfig.cmake" IMMEDIATE @ONLY)
1474 # Install the OpenCVConfig.cmake file which has the right paths pointing to the install directory
1475 install(FILES "${CMAKE_BINARY_DIR}/win-install/OpenCVConfig.cmake" DESTINATION "${CMAKE_INSTALL_PREFIX}/")
1478 # --------------------------------------------------------------------------------------------
1479 # Installation for Android ndk-build makefile: OpenCV.mk
1480 # Part 1/2: ${BIN_DIR}/OpenCV.mk -> For use *without* "make install"
1481 # Part 2/2: ${BIN_DIR}/unix-install/OpenCV.mk -> For use with "make install"
1482 # -------------------------------------------------------------------------------------------
1484 if(BUILD_SHARED_LIBS)
1485 SET(OPENCV_LIBTYPE_CONFIGMAKE "SHARED")
1487 SET(OPENCV_LIBTYPE_CONFIGMAKE "STATIC")
1489 if(BUILD_ANDROID_CAMERA_WRAPPER)
1490 set(CMAKE_CAMERA_LIBS_CONFIGCMAKE "native_camera_r${ANDROID_VERSION}")
1491 elseif(WITH_ANDROID_CAMERA)
1492 SET(CMAKE_CAMERA_LIBS_CONFIGCMAKE "")
1493 file(GLOB CMAKE_CAMERA_LIBS "${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/lib/${ANDROID_NDK_ABI_NAME}/libnative_camera_r*.so")
1494 foreach(cam_lib ${CMAKE_CAMERA_LIBS})
1495 get_filename_component(cam_lib "${cam_lib}" NAME)
1496 string(REGEX REPLACE "lib(native_camera_r[0-9]+\\.[0-9]+\\.[0-9]+)\\.so" "\\1" cam_lib "${cam_lib}")
1497 SET(CMAKE_CAMERA_LIBS_CONFIGCMAKE "${CMAKE_CAMERA_LIBS_CONFIGCMAKE} ${cam_lib}")
1502 # -------------------------------------------------------------------------------------------
1503 # Part 1/2: ${BIN_DIR}/OpenCV.mk -> For use *without* "make install"
1504 # -------------------------------------------------------------------------------------------
1506 set(CMAKE_INCLUDE_DIRS_CONFIGCMAKE "\"${OPENCV_CONFIG_FILE_INCLUDE_DIR}\" \"${CMAKE_CURRENT_SOURCE_DIR}/include\" \"${CMAKE_CURRENT_SOURCE_DIR}/include/opencv\"")
1507 set(CMAKE_BASE_INCLUDE_DIR_CONFIGCMAKE "\"${CMAKE_CURRENT_SOURCE_DIR}\"")
1508 set(CMAKE_LIBS_DIR_CONFIGCMAKE "\$(OPENCV_THIS_DIR)")
1510 configure_file("${CMAKE_CURRENT_SOURCE_DIR}/OpenCV.mk.in" "${CMAKE_BINARY_DIR}/OpenCV.mk" IMMEDIATE @ONLY)
1513 # -------------------------------------------------------------------------------------------
1514 # Part 2/2: ${BIN_DIR}/unix-install/OpenCV.mk -> For use with "make install"
1515 # -------------------------------------------------------------------------------------------
1517 set(CMAKE_INCLUDE_DIRS_CONFIGCMAKE "\"\$(LOCAL_PATH)/\$(OPENCV_THIS_DIR)/../../include/opencv\" \"\$(LOCAL_PATH)/\$(OPENCV_THIS_DIR)/../../include\"")
1518 set(CMAKE_BASE_INCLUDE_DIR_CONFIGCMAKE "")
1519 set(CMAKE_LIBS_DIR_CONFIGCMAKE "\$(OPENCV_THIS_DIR)/../..")
1521 configure_file("${CMAKE_CURRENT_SOURCE_DIR}/OpenCV.mk.in" "${CMAKE_BINARY_DIR}/unix-install/OpenCV.mk" IMMEDIATE @ONLY)
1522 install(FILES ${CMAKE_BINARY_DIR}/unix-install/OpenCV.mk DESTINATION share/OpenCV/)
1525 # --------------------------------------------------------------------------------------------
1526 #according to man pkg-config
1527 # The package name specified on the pkg-config command line is defined to
1528 # be the name of the metadata file, minus the .pc extension. If a library
1529 # can install multiple versions simultaneously, it must give each version
1530 # its own name (for example, GTK 1.2 might have the package name "gtk+"
1531 # while GTK 2.0 has "gtk+-2.0").
1532 # Part 2/2: ${BIN_DIR}/unix-install/opencv.pc -> For use *with* "make install"
1534 # exec_prefix=${prefix}
1535 # libdir=${exec_prefix}/lib
1536 # includedir=${prefix}/include/opencv
1537 # -------------------------------------------------------------------------------------------
1538 set(prefix ${CMAKE_INSTALL_PREFIX})
1539 set(exec_prefix "\${prefix}")
1540 set(libdir "\${exec_prefix}/lib${LIB_SUFFIX}")
1541 set(includedir "\${prefix}/${OPENCV_INCLUDE_PREFIX}")
1542 set(VERSION ${OPENCV_VERSION})
1544 set(OPENCV_PC_FILE_NAME opencv.pc)
1545 #need to be explicit with naming the pc file and version number for side by side installs to work.
1546 if(OPENCV_MANGLED_INSTALL_PATHS)
1547 SET(OpenCV_LIB_COMPONENTS opencv_contrib opencv_legacy opencv_objdetect opencv_calib3d opencv_features2d opencv_video opencv_highgui opencv_ml opencv_imgproc opencv_flann opencv_core )
1548 #be explicit about the library names.
1549 set(OpenCV_LIB_COMPONENTS_ )
1550 foreach( CVLib ${OpenCV_LIB_COMPONENTS})
1551 set(OpenCV_LIB_COMPONENTS_ "${OpenCV_LIB_COMPONENTS_} ${libdir}/lib${CVLib}.so.${OPENCV_VERSION}" )
1553 set(OpenCV_LIB_COMPONENTS ${OpenCV_LIB_COMPONENTS_})
1554 set(OPENCV_PC_FILE_NAME "opencv-${OPENCV_VERSION}.pc")
1555 configure_file("${CMAKE_CURRENT_SOURCE_DIR}/opencv-XXX.pc.cmake.in" "${CMAKE_BINARY_DIR}/unix-install/${OPENCV_PC_FILE_NAME}" @ONLY IMMEDIATE)
1557 configure_file("${CMAKE_CURRENT_SOURCE_DIR}/opencv.pc.cmake.in" "${CMAKE_BINARY_DIR}/unix-install/${OPENCV_PC_FILE_NAME}" @ONLY IMMEDIATE)
1560 if(UNIX AND NOT ANDROID)
1561 install(FILES ${CMAKE_BINARY_DIR}/unix-install/${OPENCV_PC_FILE_NAME} DESTINATION ${OPENCV_LIB_INSTALL_PATH}/pkgconfig)
1564 # ----------------------------------------------------------------------------
1565 # Uninstall target, for "make uninstall"
1566 # ----------------------------------------------------------------------------
1568 "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
1569 "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
1572 ADD_CUSTOM_TARGET(uninstall "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
1574 #-----------------------------------
1576 #-----------------------------------
1577 set(BUILD_PACKAGE ON CACHE BOOL "Enables 'make package_source' command")
1580 set(TARBALL_NAME "${CMAKE_PROJECT_NAME}-${OPENCV_VERSION_MAJOR}.${OPENCV_VERSION_MINOR}.${OPENCV_VERSION_PATCH}")
1587 set(TAR_TRANSFORM "\"s,^,${TARBALL_NAME}/,\"")
1588 add_custom_target(package_source
1589 #TODO: maybe we should not remove dll's
1590 COMMAND ${TAR_CMD} --transform ${TAR_TRANSFORM} -cjpf ${CMAKE_CURRENT_BINARY_DIR}/${TARBALL_NAME}.tar.bz2 --exclude=".svn" --exclude="*.pyc" --exclude="*.vcproj" --exclude="*/lib/*" --exclude="*.dll" ./
1591 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
1593 add_custom_target(package_source
1594 COMMAND zip -9 -r ${CMAKE_CURRENT_BINARY_DIR}/${TARBALL_NAME}.zip . -x '*/.svn/*' '*.vcproj' '*.pyc'
1595 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
1600 #-----------------------------------
1602 #-----------------------------------
1604 if(${CMAKE_VERSION} VERSION_GREATER "2.8.0")
1605 set(ENABLE_SOLUTION_FOLDERS OFF CACHE BOOL "Solution folder in Visual Studio or in other IDEs")
1608 if(ENABLE_SOLUTION_FOLDERS)
1609 set_property(GLOBAL PROPERTY USE_FOLDERS ON)
1610 set_property(GLOBAL PROPERTY PREDEFINED_TARGETS_FOLDER "CMakeTargets")
1613 #-----------------------------------
1615 #-----------------------------------
1616 if(BUILD_PERF_TESTS AND PYTHON_EXECUTABLE)
1617 if(CMAKE_VERSION VERSION_GREATER "2.8.2")
1618 add_custom_target(perf
1619 ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/modules/ts/misc/run.py" --configuration $<CONFIGURATION> "${CMAKE_BINARY_DIR}"
1620 WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
1621 DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/modules/ts/misc/run.py"
1624 add_custom_target(perf
1625 ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/modules/ts/misc/run.py" "${CMAKE_BINARY_DIR}"
1626 WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
1627 DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/modules/ts/misc/run.py"
1632 #-----------------------------------
1634 #-----------------------------------
1635 add_subdirectory(include)
1636 add_subdirectory(modules)
1637 add_subdirectory(doc)
1638 add_subdirectory(data)
1639 add_subdirectory(3rdparty)
1641 if(BUILD_EXAMPLES OR BUILD_ANDROID_EXAMPLES OR INSTALL_PYTHON_EXAMPLES)
1642 add_subdirectory(samples)
1645 # ----------------------------------------------------------------------------
1647 # ----------------------------------------------------------------------------
1653 SET(status_current_name "cond")
1654 foreach(arg ${ARGN})
1655 if(arg STREQUAL "THEN")
1656 SET(status_current_name "then")
1657 elseif(arg STREQUAL "ELSE")
1658 SET(status_current_name "else")
1660 LIST(APPEND status_${status_current_name} ${arg})
1664 if(DEFINED status_cond)
1665 SET(status_placeholder_length 32)
1666 string(RANDOM LENGTH ${status_placeholder_length} ALPHABET " " status_placeholder)
1667 string(LENGTH "${text}" status_text_length)
1668 if (status_text_length LESS status_placeholder_length)
1669 string(SUBSTRING "${text}${status_placeholder}" 0 ${status_placeholder_length} status_text)
1670 elseif (DEFINED status_then OR DEFINED status_else)
1671 message(STATUS "${text}")
1672 SET(status_text "${status_placeholder}")
1674 SET(status_text "${text}")
1677 if (DEFINED status_then OR DEFINED status_else)
1679 string(REPLACE ";" " " status_then "${status_then}")
1680 message(STATUS "${status_text}" "${status_then}")
1682 string(REPLACE ";" " " status_else "${status_else}")
1683 message(STATUS "${status_text}" "${status_else}")
1686 string(REPLACE ";" " " status_cond "${status_cond}")
1687 message(STATUS "${status_text}" "${status_cond}")
1690 message(STATUS "${text}")
1695 status("General configuration for opencv ${OPENCV_VERSION} =====================================")
1697 status(" Built as dynamic libs?:" BUILD_SHARED_LIBS THEN YES ELSE NO)
1698 status(" Compiler:" CMAKE_COMPILER THEN "${CMAKE_COMPILER}" ELSE "${CMAKE_CXX_COMPILER}")
1699 status(" C++ flags (Release):" ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE})
1700 status(" C++ flags (Debug):" ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG})
1702 status(" Linker flags (Release):" ${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_RELEASE})
1703 status(" Linker flags (Debug):" ${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_DEBUG})
1705 status(" Linker flags (Release):" ${CMAKE_SHARED_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS_RELEASE})
1706 status(" Linker flags (Debug):" ${CMAKE_SHARED_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS_DEBUG})
1711 status(" Android: ")
1712 status(" Android ABI:" ${ANDROID_ABI})
1713 status(" Native API level:" android-${ANDROID_NATIVE_API_LEVEL})
1714 status(" SDK target:" "${ANDROID_SDK_TARGET}")
1715 if(BUILD_WITH_ANDROID_NDK)
1716 status(" Android NDK:" "${ANDROID_NDK} (toolchain: ${ANDROID_TOOLCHAIN_NAME})")
1717 elseif(BUILD_WITH_STANDALONE_TOOLCHAIN)
1718 status(" Android toolchain:" "${ANDROID_STANDALONE_TOOLCHAIN}")
1720 status(" android tool:" ANDROID_EXECUTABLE THEN "${ANDROID_EXECUTABLE} (${ANDROID_TOOLS_Pkg_Desc})" ELSE NO)
1721 status(" ant:" ANT_EXECUTABLE THEN "${ANT_EXECUTABLE} (ver ${ANT_VERSION})" ELSE NO)
1729 status(" QT 4.x:" HAVE_QT THEN YES ELSE NO)
1730 status(" QT OpenGL support:" HAVE_QT_OPENGL THEN YES ELSE NO)
1733 status(" Win32 UI:" YES)
1737 status(" Carbon:" YES)
1739 status(" Cocoa:" YES)
1742 status(" GTK+ 2.x:" HAVE_GTK THEN YES ELSE NO)
1743 status(" GThread :" HAVE_GTHREAD THEN YES ELSE NO)
1744 status(" GtkGlExt:" HAVE_GTKGLEXT THEN YES ELSE NO)
1749 status(" OpenGL support:" HAVE_OPENGL THEN YES ELSE NO)
1753 status(" Media I/O: ")
1754 status(" ZLib:" ZLIB_FOUND THEN ${ZLIB_FOUND} ELSE build)
1755 status(" JPEG:" NOT WITH_JPEG OR JPEG_FOUND THEN ${JPEG_FOUND} ELSE build)
1756 status(" PNG:" NOT WITH_PNG OR PNG_FOUND THEN ${PNG_FOUND} ELSE build)
1757 status(" TIFF:" NOT WITH_TIFF OR TIFF_FOUND THEN ${TIFF_FOUND} ELSE build)
1758 status(" JPEG 2000:" NOT WITH_JASPER OR JASPER_FOUND THEN ${JASPER_FOUND} ELSE build)
1759 status(" OpenEXR:" WITH_OPENEXR AND OPENEXR_FOUND THEN YES ELSE NO)
1761 status(" OpenNI:" HAVE_OPENNI THEN YES ELSE NO)
1762 status(" OpenNI PrimeSensor Modules:"
1763 HAVE_OPENNI_PRIME_SENSOR_MODULE THEN YES ELSE NO)
1764 status(" XIMEA:" HAVE_XIMEA THEN YES ELSE NO)
1768 if(UNIX AND NOT APPLE)
1769 status(" Video I/O:")
1770 status(" DC1394 1.x:" HAVE_DC1394 THEN YES ELSE NO)
1771 status(" DC1394 2.x:" HAVE_DC1394_2 THEN YES ELSE NO)
1772 status(" FFMPEG:" HAVE_FFMPEG THEN YES ELSE NO)
1773 status(" codec:" HAVE_FFMPEG_CODEC THEN YES ELSE NO)
1774 status(" format:" HAVE_FFMPEG_FORMAT THEN YES ELSE NO)
1775 status(" util:" HAVE_FFMPEG_UTIL THEN YES ELSE NO)
1776 status(" swscale:" HAVE_FFMPEG_SWSCALE THEN YES ELSE NO)
1777 status(" gentoo-style:" HAVE_GENTOO_FFMPEG THEN YES ELSE NO)
1778 status(" GStreamer:" HAVE_GSTREAMER THEN YES ELSE NO)
1779 status(" UniCap:" HAVE_UNICAP THEN YES ELSE NO)
1780 status(" PvAPI:" HAVE_PVAPI THEN YES ELSE NO)
1781 status(" V4L/V4L2:" HAVE_LIBV4L THEN Using libv4l ELSE ${HAVE_CAMV4L}/${HAVE_CAMV4L2})
1782 status(" Xine:" HAVE_XINE THEN YES ELSE NO)
1785 if(WITH_ANDROID_CAMERA)
1786 status(" AndroidNativeCamera:" BUILD_ANDROID_CAMERA_WRAPPER THEN "YES, build for Android ${ANDROID_VERSION}" ELSE "YES, use prebuilt libraries")
1788 status(" AndroidNativeCamera:" "NO (native camera requires Android API level 8 or higher)")
1793 status(" Video I/O:" WITH_QUICKTIME THEN QuickTime ELSE QTKit)
1795 status(" Video I/O: AVFoundation")
1798 status(" Video I/O:" HAVE_VIDEOINPUT THEN DirectShow ELSE NO)
1801 # Other third-party libraries
1803 status(" Other third-party libraries:")
1805 if(WITH_IPP AND IPP_FOUND)
1806 status(" Use IPP:" "${IPP_LATEST_VERSION_STR} [${IPP_LATEST_VERSION_MAJOR}.${IPP_LATEST_VERSION_MINOR}.${IPP_LATEST_VERSION_BUILD}]")
1807 status(" at:" "${IPP_ROOT_DIR}")
1809 status(" Use IPP:" WITH_IPP AND NOT IPP_FOUND THEN IPP not found ELSE NO)
1812 status(" Use TBB:" HAVE_TBB THEN YES ELSE NO)
1815 status(" Use ThreadingFramework:" HAVE_THREADING_FRAMEWORK THEN YES ELSE NO)
1818 status(" Use Cuda:" HAVE_CUDA THEN YES ELSE NO)
1819 status(" Use Eigen:" HAVE_EIGEN THEN YES ELSE NO)
1822 status(" Python interpreter:" PYTHON_EXECUTABLE THEN "${PYTHON_EXECUTABLE} (ver ${PYTHON_VERSION_MAJOR_MINOR})" ELSE NO)
1823 # interfaces to other languages
1825 status(" Interfaces:")
1826 status(" Python:" BUILD_NEW_PYTHON_SUPPORT THEN YES ELSE NO)
1827 status(" Python numpy:" PYTHON_USE_NUMPY AND BUILD_NEW_PYTHON_SUPPORT THEN YES ELSE "NO (Python wrappers will not be generated)")
1828 if(ANDROID AND ANDROID_NATIVE_API_LEVEL LESS 8)
1829 status(" Java:" "NO (Java API requires Android API level 8 or higher)")
1831 status(" Java:" BUILD_JAVA_SUPPORT THEN YES ELSE NO)
1836 status(" Documentation:")
1837 status(" Sphinx:" HAVE_SPHINX THEN "${SPHINX_BUILD} (ver ${SPHINX_VERSION})" ELSE NO)
1838 status(" PdfLaTeX compiler:" PDFLATEX_COMPILER THEN "${PDFLATEX_COMPILER}" ELSE NO)
1839 if (BUILD_DOCS AND HAVE_SPHINX)
1840 status(" Build Documentation:" PDFLATEX_COMPILER THEN YES ELSE "YES (only HTML without math formulas)")
1842 status(" Build Documentation:" NO)
1847 status(" Tests and samples:")
1848 status(" Tests:" BUILD_TESTS THEN YES ELSE NO)
1849 status(" Performance tests:" BUILD_PERF_TESTS THEN YES ELSE NO)
1850 status(" Examples:" BUILD_EXAMPLES THEN YES ELSE NO)
1853 status(" Android tests:" BUILD_TESTS AND CAN_BUILD_ANDROID_PROJECTS THEN YES ELSE NO)
1854 status(" Android examples:" BUILD_ANDROID_EXAMPLES THEN YES ELSE NO)
1859 status(" Install path:" "${CMAKE_INSTALL_PREFIX}")
1861 status(" cvconfig.h is in:" "${OPENCV_CONFIG_FILE_INCLUDE_DIR}")
1862 status("-----------------------------------------------------------------")
1865 # warn in the case of in-source build
1866 if("${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}")
1867 message(WARNING "The source directory is the same as binary directory. \"make clean\" may damage the source tree")