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 # it _must_ go before PROJECT(OpenCV) in order to work
13 set(CMAKE_INSTALL_PREFIX "/usr")
14 set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "Configs" FORCE)
15 set(CMAKE_C_FLAGS_MINSIZEREL "" CACHE INTERNAL "" FORCE)
16 set(CMAKE_C_FLAGS_RELWITHDEBINFO "" CACHE INTERNAL "" FORCE)
17 set(CMAKE_CXX_FLAGS_MINSIZEREL "" CACHE INTERNAL "" FORCE)
18 set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "" CACHE INTERNAL "" FORCE)
19 set(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "" CACHE INTERNAL "" FORCE)
20 set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "" CACHE INTERNAL "" FORCE)
21 set(CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL "" CACHE INTERNAL "" FORCE)
22 set(CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO "" CACHE INTERNAL "" FORCE)
23 set(CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL "" CACHE INTERNAL "" FORCE)
24 set(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "" CACHE INTERNAL "" FORCE)
28 cmake_minimum_required(VERSION 2.6)
30 set(CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS true)
32 set(CMAKE_USE_RELATIVE_PATHS ON CACHE INTERNAL "" FORCE)
35 # --------------------------------------------------------------
36 # Indicate CMake 2.7 and above that we don't want to mix relative
37 # and absolute paths in linker lib lists.
38 # Run "cmake --help-policy CMP0003" for more information.
39 # --------------------------------------------------------------
40 if(COMMAND cmake_policy)
41 cmake_policy(SET CMP0003 NEW)
44 # ----------------------------------------------------------------------------
45 # Current version number:
46 # ----------------------------------------------------------------------------
47 set(OPENCV_VERSION "1.1.0")
49 string(REGEX MATCHALL "[0-9]" OPENCV_VERSION_PARTS "${OPENCV_VERSION}")
51 list(GET OPENCV_VERSION_PARTS 0 OPENCV_VERSION_MAJOR)
52 list(GET OPENCV_VERSION_PARTS 1 OPENCV_VERSION_MINOR)
53 list(GET OPENCV_VERSION_PARTS 2 OPENCV_VERSION_PATCH)
55 set(OPENCV_SOVERSION "${OPENCV_VERSION_MAJOR}.${OPENCV_VERSION_MINOR}")
59 set(OPENCV_DLLVERSION "${OPENCV_VERSION_MAJOR}${OPENCV_VERSION_MINOR}${OPENCV_VERSION_PATCH}")
60 set(OPENCV_DEBUG_POSTFIX d)
63 #set(OPENCV_DLLVERSION "${OPENCV_VERSION_MAJOR}${OPENCV_VERSION_MINOR}${OPENCV_VERSION_PATCH}")
64 set(OPENCV_DLLVERSION "")
65 set(OPENCV_DEBUG_POSTFIX)
69 # ----------------------------------------------------------------------------
70 # Variables for cvconfig.h.cmake
71 # ----------------------------------------------------------------------------
73 set(PACKAGE_BUGREPORT "opencvlibrary-devel@lists.sourceforge.net")
74 set(PACKAGE_NAME "opencv")
75 set(PACKAGE_STRING "${PACKAGE} ${OPENCV_VERSION}")
76 set(PACKAGE_TARNAME "${PACKAGE}")
77 set(PACKAGE_VERSION "${OPENCV_VERSION}")
79 # ----------------------------------------------------------------------------
80 # Autodetect if we are in a SVN repository
81 # ----------------------------------------------------------------------------
82 find_program(SVNVERSION_PATH svnversion)
83 mark_as_advanced(force SVNVERSION_PATH)
85 message(STATUS "Extracting svn version, please wait...")
86 execute_process(COMMAND ${SVNVERSION_PATH} -n ${CMAKE_SOURCE_DIR} OUTPUT_VARIABLE SVNVERSION_RESULT)
88 if(SVNVERSION_RESULT MATCHES "exported")
89 # This is NOT a svn repository:
90 set(OPENCV_SVNVERSION "")
92 set(OPENCV_SVNVERSION " svn:${SVNVERSION_RESULT}")
95 message(STATUS "SVNVERSION: ${OPENCV_SVNVERSION}")
97 # We don't have svnversion:
98 set(OPENCV_SVNVERSION "")
101 # ----------------------------------------------------------------------------
102 # Detect GNU version:
103 # ----------------------------------------------------------------------------
104 if(CMAKE_COMPILER_IS_GNUCXX)
105 execute_process(COMMAND ${CMAKE_CXX_COMPILER} --version
106 OUTPUT_VARIABLE CMAKE_OPENCV_GCC_VERSION_FULL
107 OUTPUT_STRIP_TRAILING_WHITESPACE)
109 # Typical output in CMAKE_OPENCV_GCC_VERSION_FULL: "c+//0 (whatever) 4.2.3 (...)"
110 # Look for the version number
111 string(REGEX MATCH "[0-9].[0-9].[0-9]" CMAKE_GCC_REGEX_VERSION "${CMAKE_OPENCV_GCC_VERSION_FULL}")
113 # Split the three parts:
114 string(REGEX MATCHALL "[0-9]" CMAKE_OPENCV_GCC_VERSIONS "${CMAKE_GCC_REGEX_VERSION}")
116 list(GET CMAKE_OPENCV_GCC_VERSIONS 0 CMAKE_OPENCV_GCC_VERSION_MAJOR)
117 list(GET CMAKE_OPENCV_GCC_VERSIONS 1 CMAKE_OPENCV_GCC_VERSION_MINOR)
119 set(CMAKE_OPENCV_GCC_VERSION ${CMAKE_OPENCV_GCC_VERSION_MAJOR}${CMAKE_OPENCV_GCC_VERSION_MINOR})
120 message(STATUS "Detected version of GNU GCC: ${CMAKE_OPENCV_GCC_VERSION}")
123 # ----------------------------------------------------------------------------
124 # CHECK FOR SYSTEM LIBRARIES, OPTIONS, ETC..
125 # ----------------------------------------------------------------------------
127 # Build (or not) some apps:
128 # ===================================================
129 set(BUILD_EXAMPLES OFF CACHE BOOL "Build all examples")
132 # ===================================================
133 set(BUILD_TESTS ON CACHE BOOL "Build tests")
136 include(FindPkgConfig OPTIONAL)
137 include(CheckFunctionExists)
138 include(CheckIncludeFile)
141 set(OPENCV_ENABLE_OPENMP OFF CACHE BOOL "")
143 if(CMAKE_COMPILER_IS_GNUCXX)
144 set(OPENCV_ENABLE_PROFILING OFF CACHE BOOL "Enable profiling in the GCC compiler (Add flags: -g -pg)")
145 if (NOT MINGW AND NOT ${CMAKE_SYSTEM_PROCESSOR} MATCHES arm*)
146 if (${CMAKE_SYSTEM_PROCESSOR} MATCHES amd64* OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES x86_64*)
147 set(OPENCV_USE_SSE2 ON CACHE BOOL "Enable SSE2 for GCC")
148 elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES amd64* OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES x86_64*)
149 set(OPENCV_USE_SSE ON CACHE BOOL "Enable SSE for GCC")
150 endif (${CMAKE_SYSTEM_PROCESSOR} MATCHES amd64* OR ${CMAKE_SYSTEM_PROCESSOR} MATCHES x86_64*)
151 endif (NOT MINGW AND NOT ${CMAKE_SYSTEM_PROCESSOR} MATCHES arm*)
154 # ===================================================
155 # Macros that checks if module have been installed.
156 # After it adds module to build and define
157 # constants passed as second arg
158 # ===================================================
160 macro(CHECK_MODULE module_name define)
163 set(ALIAS ALIASOF_${module_name})
164 set(ALIAS_FOUND ${ALIAS}_FOUND)
165 set(ALIAS_INCLUDE_DIRS ${ALIAS}_INCLUDE_DIRS)
166 set(ALIAS_LIBRARY_DIRS ${ALIAS}_LIBRARY_DIRS)
167 set(ALIAS_LIBRARIES ${ALIAS}_LIBRARIES)
169 PKG_CHECK_MODULES(${ALIAS} ${module_name})
173 foreach(P "${ALIAS_INCLUDE_DIRS}")
174 list(APPEND HIGHGUI_INCLUDE_DIRS ${${P}})
177 foreach(P "${ALIAS_LIBRARY_DIRS}")
178 list(APPEND HIGHGUI_LIBRARY_DIRS ${${P}})
181 list(APPEND HIGHGUI_LIBRARIES ${${ALIAS_LIBRARIES}})
188 CHECK_MODULE(gtk+-2.0 HAVE_GTK)
189 CHECK_MODULE(gthread-2.0 HAVE_GTHREAD)
190 CHECK_MODULE(gstreamer-base-0.10 HAVE_GSTREAMER)
193 CHECK_MODULE(libunicap HAVE_UNICAP_)
194 CHECK_MODULE(libucil HAVE_UNICAP_UCIL)
195 if(HAVE_UNICAP_ AND HAVE_UNICAP_UCIL)
199 CHECK_MODULE(libavcodec HAVE_FFMPEG_CODEC)
200 CHECK_MODULE(libavformat HAVE_FFMPEG_FORMAT)
201 CHECK_MODULE(libavutil HAVE_FFMPEG_UTIL)
202 CHECK_INCLUDE_FILE(ffmpeg/swscale.h HAVE_FFMPEG_SWSCALE)
203 if(HAVE_FFMPEG_CODEC AND HAVE_FFMPEG_FORMAT AND HAVE_FFMPEG_UTIL)
207 CHECK_MODULE(libdc1394-2 HAVE_DC1394_2)
208 if(NOT HAVE_DC1394_2)
209 CHECK_MODULE(libdc1394 HAVE_DC1394)
213 CHECK_INCLUDE_FILE(alloca.h HAVE_ALLOCA_H)
214 CHECK_FUNCTION_EXISTS(alloca HAVE_ALLOCA)
215 CHECK_INCLUDE_FILE(unistd.h HAVE_UNISTD_H)
216 CHECK_INCLUDE_FILE(pthread.h HAVE_LIBPTHREAD)
218 CHECK_MODULE(libxine HAVE_XINE)
219 CHECK_INCLUDE_FILE(linux/videodev.h HAVE_CAMV4L)
220 CHECK_INCLUDE_FILE(linux/videodev2.h HAVE_CAMV4L2)
227 set(OPENCV_LINKER_LIBS dl m pthread)
229 add_definitions(-DHAVE_ALLOCA -DHAVE_ALLOCA_H -DHAVE_LIBPTHREAD -DHAVE_UNISTD_H)
233 set(BUILD_PYTHON_SUPPORT OFF CACHE BOOL "Build with Python support")
234 set(BUILD_OCTAVE_SUPPORT OFF CACHE BOOL "Build with Octave support")
239 find_package(PythonInterp)
240 find_package(PythonLibs)
242 # Build with python if installes:
243 # ===================================================
244 if(PYTHONLIBS_FOUND AND BUILD_PYTHON_SUPPORT)
245 execute_process(COMMAND ${PYTHON_EXECUTABLE} --version
246 ERROR_VARIABLE PYTHON_VERSION_FULL
247 OUTPUT_STRIP_TRAILING_WHITESPACE)
249 string(REGEX MATCH "[0-9].[0-9]" PYTHON_VERSION_MAJOR_MINOR "${PYTHON_VERSION_FULL}")
251 set(PYTHON_PLUGIN_INSTALL_PATH lib/python${PYTHON_VERSION_MAJOR_MINOR}/site-packages/opencv)
254 get_filename_component(PYTHON_PATH "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Python\\PythonCore\\${PYTHON_VERSION_MAJOR_MINOR}\\InstallPath]" ABSOLUTE CACHE)
255 set(PYTHON_PLUGIN_INSTALL_PATH "${PYTHON_PATH}/Lib/site-packages/opencv")
264 foreach(v "6.1" "6.0" "5.3" "5.2" "5.1")
266 find_path(IPP_PATH "ippi-${v}.dll"
267 PATHS ${CMAKE_PROGRAM_PATH} ${CMAKE_SYSTEM_PROGRAM_PATH}
268 DOC "The path to IPP DLLs")
270 file(GLOB IPP_HDRS "${IPP_PATH}/../include")
278 message(STATUS "IPP detected: ${IPP_FOUND}")
279 set(BUILD_CUSTOM_IPP_LIB ${IPP_FOUND} CACHE BOOL "Build custom opencv_ipp*.dll")
283 # ----------------------------------------------------------------------------
284 # UPDATE CONFIG FILES & SCRIPTS:
286 # CONFIGURE_FILE(InputFile OutputFile [COPYONLY] [ESCAPE_QUOTES] [@ONLY])
287 # If @ONLY is specified, only variables of the form @VAR@ will be
288 # replaces and ${VAR} will be ignored.
290 # A directory will be created for each platform so the "cvconfig.h" file is
291 # not overwritten if cmake generates code in the same path.
292 # ----------------------------------------------------------------------------
293 add_definitions(-DHAVE_CONFIG_H)
295 set(OPENCV_CONFIG_FILE_INCLUDE_DIR "${CMAKE_BINARY_DIR}/" CACHE PATH "Where to create the platform-dependant cvconfig.h")
297 message(STATUS "Parsing 'cvconfig.h.cmake'")
298 configure_file("${CMAKE_SOURCE_DIR}/cvconfig.h.cmake" "${OPENCV_CONFIG_FILE_INCLUDE_DIR}/cvconfig.h")
300 # ---------------------------------------------------------------------------
301 # The C+//0 include & link directories:
302 # ---------------------------------------------------------------------------
303 include_directories("."
304 "${OPENCV_CONFIG_FILE_INCLUDE_DIR}"
305 "${CMAKE_SOURCE_DIR}/include"
306 "${CMAKE_SOURCE_DIR}/include/opencv"
309 # ----------------------------------------------------------------------------
310 # Set the maximum level of warnings:
311 # ----------------------------------------------------------------------------
312 # Should be set to true for development
313 set(OPENCV_WARNINGS_ARE_ERRORS OFF CACHE BOOL "Treat warnings as errors")
315 # Whole program optimization?
316 set(OPENCV_WHOLE_PROGRAM_OPTIMIZATION OFF CACHE BOOL "Flags for whole program optimization.")
318 set(EXTRA_C_FLAGS "")
319 set(EXTRA_C_FLAGS_RELEASE "")
320 set(EXTRA_C_FLAGS_DEBUG "")
321 set(EXTRA_EXE_LINKER_FLAGS "")
322 set(EXTRA_EXE_LINKER_FLAGS_RELEASE "")
323 set(EXTRA_EXE_LINKER_FLAGS_DEBUG "")
326 set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} /W4 /D _CRT_SECURE_NO_DEPRECATE /D _CRT_NONSTDC_NO_DEPRECATE")
327 # 64-bit portability warnings, in MSVC8
329 set(EXTRA_C_FLAGS "${OPENCV_EXTRA_CPP_FLAGS} /Wp64")
332 set(EXTRA_EXE_LINKER_FLAGS_RELEASE "${EXTRA_EXE_LINKER_FLAGS_RELEASE} /debug")
334 # Whole program optimization
335 if(OPENCV_WHOLE_PROGRAM_OPTIMIZATION AND MSVC80)
336 set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} /GL")
337 set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS} /LTCG")
338 set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${CMAKE_MODULE_LINKER_FLAGS} /LTCG")
341 if(OPENCV_ENABLE_OPENMP)
342 set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS} /openmp")
345 # Remove unreferenced functions: function level linking
346 set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} /Gy")
347 set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} /Zi")
350 if(CMAKE_COMPILER_IS_GNUCXX)
351 # High level of warnings.
352 # The -Wno-long-long is required in 64bit systems when including sytem headers.
353 set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Wall")
357 set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -pthread")
360 if(OPENCV_WARNINGS_ARE_ERRORS)
361 set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -Werror")
364 # GCC optimization for floating math
365 set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -ffast-math")
367 # Whole program optimization
368 if(OPENCV_WHOLE_PROGRAM_OPTIMIZATION)
369 set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -fwhole-program --combine")
373 if(OPENCV_ENABLE_PROFILING)
374 set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -pg -g")
376 # Remove unreferenced functions: function level linking
378 set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -ffunction-sections")
383 if(OPENCV_ENABLE_OPENMP)
384 set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -D_GLIBCXX_PARALLEL -fopenmp")
387 set(EXTRA_C_FLAGS_RELEASE "${EXTRA_C_FLAGS_RELEASE} -DNDEBUG")
388 set(EXTRA_C_FLAGS_DEBUG "${EXTRA_C_FLAGS_DEBUG} -O0 -DDEBUG -D_DEBUG")
391 set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -msse")
394 set(EXTRA_C_FLAGS "${EXTRA_C_FLAGS} -msse2")
398 # Add user supplied extra options (optimization, etc...)
399 # ==========================================================
400 set(OPENCV_EXTRA_C_FLAGS ${EXTRA_C_FLAGS} CACHE STRING "Extra compiler options")
401 set(OPENCV_EXTRA_C_FLAGS_RELEASE ${EXTRA_C_FLAGS_RELEASE} CACHE STRING "Extra compiler options for Release build")
402 set(OPENCV_EXTRA_C_FLAGS_DEBUG ${EXTRA_C_FLAGS_DEBUG} CACHE STRING "Extra compiler options for Debug build")
403 set(OPENCV_EXTRA_EXE_LINKER_FLAGS ${EXTRA_EXE_LINKER_FLAGS} CACHE STRING "Extra linker flags")
404 set(OPENCV_EXTRA_EXE_LINKER_FLAGS_RELEASE ${EXTRA_EXE_LINKER_FLAGS_RELEASE} CACHE STRING "Extra linker flags for Release build")
405 set(OPENCV_EXTRA_EXE_LINKER_FLAGS_DEBUG ${EXTRA_EXE_LINKER_FLAGS_DEBUG} CACHE STRING "Extra linker flags for Debug build")
407 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OPENCV_EXTRA_C_FLAGS}")
408 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OPENCV_EXTRA_C_FLAGS}")
409 set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${OPENCV_EXTRA_C_FLAGS_RELEASE}")
410 set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} ${OPENCV_EXTRA_C_FLAGS_RELEASE}")
411 set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${OPENCV_EXTRA_C_FLAGS_DEBUG}")
412 set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${OPENCV_EXTRA_C_FLAGS_DEBUG}")
413 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OPENCV_EXTRA_EXE_LINKER_FLAGS}")
414 set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} ${OPENCV_EXTRA_EXE_LINKER_FLAGS_RELEASE}")
415 set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${OPENCV_EXTRA_EXE_LINKER_FLAGS_DEBUG}")
417 if("${CMAKE_CONFIGURE_LDFLAGS}")
418 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_CONFIGURE_LDFLAGS}")
419 endif("${CMAKE_CONFIGURE_LDFLAGS}")
421 # ----------------------------------------------------------------------------
422 # PROCESS SUBDIRECTORIES:
423 # ----------------------------------------------------------------------------
424 # Save libs and executables in the same place
425 set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib CACHE PATH "Output directory for libraries" )
426 set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin CACHE PATH "Output directory for applications" )
429 set(OPENCV_DOC_INSTALL_PATH doc)
431 set(OPENCV_DOC_INSTALL_PATH share/opencv/doc)
434 #-----------------------------------
436 #-----------------------------------
437 add_subdirectory(src)
438 add_subdirectory(apps)
439 add_subdirectory(doc)
440 add_subdirectory(data)
443 add_subdirectory(samples)
448 add_subdirectory(tests)
451 add_subdirectory(interfaces)
454 add_subdirectory(3rdparty)
457 # --------------------------------------------------------------------------------------------
458 # Installation for CMake Module: OpenCVConfig.cmake
459 # Part 1/2: ${BIN_DIR}/OpenCVConfig.cmake -> For use *without* "make install"
460 # Part 2/2: ${BIN_DIR}/unix-install/OpenCVConfig.cmake -> For use with "make install"
461 # -------------------------------------------------------------------------------------------
463 # -------------------------------------------------------------------------------------------
464 # Part 1/2: ${BIN_DIR}/OpenCVConfig.cmake -> For use *without* "make install"
465 # -------------------------------------------------------------------------------------------
467 # Name of libraries is: libcv.so.1.1.0, etc...
468 # OPENCV_DLLVERSION must be set to "110", etc..
469 # Already done above.
471 # Set CMAKE_INCLUDE_DIRS_CONFIGCMAKE to the list of include directories:
472 set(CMAKE_INCLUDE_DIRS_CONFIGCMAKE)
473 list(APPEND CMAKE_INCLUDE_DIRS_CONFIGCMAKE "${OPENCV_CONFIG_FILE_INCLUDE_DIR}")
474 list(APPEND CMAKE_INCLUDE_DIRS_CONFIGCMAKE "${CMAKE_SOURCE_DIR}/include")
475 list(APPEND CMAKE_INCLUDE_DIRS_CONFIGCMAKE "${CMAKE_SOURCE_DIR}/include/opencv")
477 set(CMAKE_LIB_DIRS_CONFIGCMAKE ${LIBRARY_OUTPUT_PATH})
479 configure_file("${CMAKE_SOURCE_DIR}/OpenCVConfig.cmake.in" "${CMAKE_BINARY_DIR}/OpenCVConfig.cmake" IMMEDIATE)
481 # --------------------------------------------------------------------------------------------
482 # Part 2/2: ${BIN_DIR}/unix-install/OpenCVConfig.cmake -> For use *with* "make install"
483 # -------------------------------------------------------------------------------------------
484 # Set CMAKE_INCLUDE_DIRS_CONFIGCMAKE to the list of include directories:
486 set(CMAKE_INCLUDE_DIRS_CONFIGCMAKE "${CMAKE_INSTALL_PREFIX}/include/opencv")
487 set(CMAKE_LIB_DIRS_CONFIGCMAKE "${CMAKE_INSTALL_PREFIX}/lib")
489 exec_program(${CMAKE_COMMAND} ARGS "-E make_directory \"${CMAKE_BINARY_DIR}/unix-install/\"")
490 configure_file("${CMAKE_SOURCE_DIR}/OpenCVConfig.cmake.in" "${CMAKE_BINARY_DIR}/unix-install/OpenCVConfig.cmake" IMMEDIATE)
493 # For a command "FIND_PACKAGE(FOO)", CMake will look at the directory /usr/share|lib/FOO/FOOConfig.cmake, so:
494 install(FILES ${CMAKE_BINARY_DIR}/unix-install/OpenCVConfig.cmake DESTINATION ${CMAKE_INSTALL_PREFIX}/share/opencv/)
498 # --------------------------------------------------------------------------------------------
499 # Part 2/2: ${BIN_DIR}/unix-install/opencv.pc -> For use *with* "make install"
501 # exec_prefix=${prefix}
502 # libdir=${exec_prefix}/lib
503 # includedir=${prefix}/include/opencv
504 # -------------------------------------------------------------------------------------------
505 set(prefix ${CMAKE_INSTALL_PREFIX})
506 set(exec_prefix "\${prefix}")
507 set(libdir "\${exec_prefix}/lib")
508 set(includedir "\${prefix}/include")
509 set(VERSION ${OPENCV_VERSION})
511 configure_file("${CMAKE_SOURCE_DIR}/opencv.pc.cmake.in" "${CMAKE_BINARY_DIR}/unix-install/opencv.pc" @ONLY IMMEDIATE)
514 install(FILES ${CMAKE_BINARY_DIR}/unix-install/opencv.pc DESTINATION lib/pkgconfig)
518 # ----------------------------------------------------------------------------
519 # Uninstall target, for "make uninstall"
520 # ----------------------------------------------------------------------------
522 "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
523 "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
526 ADD_CUSTOM_TARGET(uninstall
527 "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
530 # ----------------------------------------------------------------------------
532 # ----------------------------------------------------------------------------
534 option(BUILD_PACKAGE "Build a installer with the SDK")
540 ${CMAKE_BINARY_DIR}/.cpack/Package.cmake
553 DESTINATION ${OPENCV_DOC_INSTALL_PATH}
557 include(${CMAKE_BINARY_DIR}/.cpack/Package.cmake)
561 # ----------------------------------------------------------------------------
563 # ----------------------------------------------------------------------------
565 message(STATUS "General configuration for opencv ${OPENCV_VERSION} =====================================")
567 message(STATUS " Compiler: ${CMAKE_COMPILER}")
568 message(STATUS " C++ flags (Release): ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE}")
569 message(STATUS " C++ flags (Debug): ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG}")
571 message(STATUS " Linker flags (Release): ${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_RELEASE}")
572 message(STATUS " Linker flags (Debug): ${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_DEBUG}")
574 message(STATUS " Linker flags (Release): ${CMAKE_SHARED_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS_RELEASE}")
575 message(STATUS " Linker flags (Debug): ${CMAKE_SHARED_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS_DEBUG}")
581 message(STATUS " GUI: ")
582 message(STATUS " GTK+ 2.x: ${HAVE_GTK}")
583 message(STATUS " GThread: ${HAVE_GTHREAD}")
585 message(STATUS " Image I/O: ")
586 message(STATUS " JPEG: ${JPEG_FOUND}")
587 message(STATUS " PNG: ${PNG_FOUND}")
588 message(STATUS " TIFF: ${TIFF_FOUND}")
589 message(STATUS " JASPER: ${JASPER_FOUND}")
592 message(STATUS " Video I/O: ")
593 message(STATUS " DC1394 1.x: ${HAVE_DC1394}")
594 message(STATUS " DC1394 2.x: ${HAVE_DC1394_2}")
595 message(STATUS " FFMPEG: ${HAVE_FFMPEG}")
596 message(STATUS " GStreamer: ${HAVE_GSTREAMER}")
597 message(STATUS " UniCap: ${HAVE_UNICAP}")
598 message(STATUS " V4L/V4L2: ${HAVE_CAMV4L}/${HAVE_CAMV4L2}")
599 message(STATUS " Xine: ${HAVE_XINE}")
602 message(STATUS " Interfaces: ")
603 if(PYTHONLIBS_FOUND AND BUILD_PYTHON_SUPPORT)
604 message(STATUS " Python: 1")
606 message(STATUS " Python: 0")
608 if(IPP_FOUND AND BUILD_CUSTOM_IPP_LIB)
609 message(STATUS " Custom IPP Lib: 1")
611 message(STATUS " Custom IPP Lib: 0")
614 message(STATUS " Install path: ${CMAKE_INSTALL_PREFIX}")
616 message(STATUS " cvconfig.h is in: ${OPENCV_CONFIG_FILE_INCLUDE_DIR}")
617 message(STATUS "-----------------------------------------------------------------")
620 #----------------------------------------------------------------------------
621 # Generate the OpenCVConfig.cmake file for unix
622 # installation in CMAKE_INSTALL_PREFIX
623 #----------------------------------------------------------------------------