From 0e88733b1385930c73b75d48388ea75cd1bce593 Mon Sep 17 00:00:00 2001 From: Anatoly Baksheev Date: Sun, 24 Nov 2013 23:26:03 +0400 Subject: [PATCH] updating Viz cmake (switched to WITH_VTK option) --- CMakeLists.txt | 4 ++ cmake/OpenCVDetectVTK.cmake | 27 +++++++++++ modules/viz/CMakeLists.txt | 58 +++-------------------- modules/viz/include/opencv2/viz/viz3d.hpp | 2 +- 4 files changed, 38 insertions(+), 53 deletions(-) create mode 100644 cmake/OpenCVDetectVTK.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 2e27852de..856a4d4f8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -116,6 +116,7 @@ endif() OCV_OPTION(WITH_1394 "Include IEEE1394 support" ON IF (NOT ANDROID AND NOT IOS) ) OCV_OPTION(WITH_AVFOUNDATION "Use AVFoundation for Video I/O" ON IF IOS) OCV_OPTION(WITH_CARBON "Use Carbon for UI instead of Cocoa" OFF IF APPLE ) +OCV_OPTION(WITH_VTK "Include VTK library support (and build opencv_viz module eiher)" OFF IF (NOT ANDROID AND NOT IOS) ) OCV_OPTION(WITH_CUDA "Include NVidia Cuda Runtime support" ON IF (NOT IOS) ) OCV_OPTION(WITH_CUFFT "Include NVidia Cuda Fast Fourier Transform (FFT) library support" ON IF (NOT IOS) ) OCV_OPTION(WITH_CUBLAS "Include NVidia Cuda Basic Linear Algebra Subprograms (BLAS) library support" OFF IF (NOT IOS) ) @@ -430,6 +431,8 @@ endif() # --- Matlab/Octave --- include(cmake/OpenCVFindMatlab.cmake) +include(cmake/OpenCVDetectVTK.cmake) + # ---------------------------------------------------------------------------- # Add CUDA libraries (needed for apps/tools, samples) # ---------------------------------------------------------------------------- @@ -659,6 +662,7 @@ else() endif() status(" OpenGL support:" HAVE_OPENGL THEN "YES (${OPENGL_LIBRARIES})" ELSE NO) +status(" VTK support:" HAVE_VTK THEN "YES (ver ${VTK_VERSION})" ELSE NO) # ========================== MEDIA IO ========================== status("") diff --git a/cmake/OpenCVDetectVTK.cmake b/cmake/OpenCVDetectVTK.cmake new file mode 100644 index 000000000..2b9d46ab0 --- /dev/null +++ b/cmake/OpenCVDetectVTK.cmake @@ -0,0 +1,27 @@ +if(NOT WITH_VTK OR ANDROID OR IOS) + message(STATUS "VTK support is disabled.") + return() +endif() + +find_package(VTK 6.0 QUIET COMPONENTS vtkRenderingCore vtkInteractionWidgets vtkInteractionStyle vtkIOLegacy vtkIOPLY vtkRenderingFreeType vtkRenderingLOD vtkFiltersTexture NO_MODULE) + +if(NOT DEFINED VTK_FOUND OR NOT VTK_FOUND) + find_package(VTK 5.10 QUIET COMPONENTS vtkCommon vtkFiltering vtkRendering vtkWidgets vtkImaging NO_MODULE) +endif() + +if(NOT DEFINED VTK_FOUND OR NOT VTK_FOUND) + find_package(VTK 5.8 QUIET COMPONENTS vtkCommon vtkFiltering vtkRendering vtkWidgets vtkImaging NO_MODULE) +endif() + +if(VTK_FOUND) + if (BUILD_SHARED_LIBS OR (NOT BUILD_SHARED_LIBS AND NOT VTK_BUILD_SHARED_LIBS)) + set(HAVE_VTK ON) + message(STATUS "Found VTK ver. ${VTK_VERSION} (usefile: ${VTK_USE_FILE})") + else () + set(HAVE_VTK OFF) + message(WARNING "VTK disabled. You are to build OpenCV in STATIC but VTK is SHARED!") + endif () +else() + set(HAVE_VTK OFF) + message(STATUS "VTK is not found. Please set -DVTK_DIR in CMake to VTK build directory, or set $VTK_DIR enviroment variable to VTK install subdirectory with UseVTK.cmake file (for windows)") +endif() \ No newline at end of file diff --git a/modules/viz/CMakeLists.txt b/modules/viz/CMakeLists.txt index ee6354dc9..93df8be96 100644 --- a/modules/viz/CMakeLists.txt +++ b/modules/viz/CMakeLists.txt @@ -1,57 +1,11 @@ -macro(find_qvtk) - find_library (QVTK_LIBRARY QVTK HINTS ${VTK_DIR} ${VTK_DIR}/bin) - find_path (QVTK_INCLUDE_DIR QVTKWidget.h HINT ${VTK_INCLUDE_DIRS}) - find_package_handle_standard_args(QVTK DEFAULT_MSG QVTK_LIBRARY QVTK_INCLUDE_DIR) - - if(QVTK_FOUND) - get_filename_component (QVTK_LIBRARY_DIR ${QVTK_LIBRARY} PATH) - list(APPEND VTK_LIBRARY_DIRS ${QVTK_LIBRARY_DIR}) - list(APPEND VTK_INCLUDE_DIRS ${QVTK_INCLUDE_DIR}) - set (VTK_USE_QVTK ON) - endif() -endmacro() - -macro(find_vtk) - find_package(VTK) - if(${VTK_MAJOR_VERSION} LESS 5) - MESSAGE(FATAL_ERROR "VTK 5 or more required!") - endif() - if(VTK_FOUND) - if (BUILD_SHARED_LIBS OR (NOT BUILD_SHARED_LIBS AND NOT VTK_BUILD_SHARED_LIBS)) - find_qvtk() - message(STATUS "VTK found (include: ${VTK_INCLUDE_DIRS}, lib: ${VTK_LIBRARY_DIRS})") - link_directories(${VTK_LIBRARY_DIRS}) - include_directories(SYSTEM ${VTK_INCLUDE_DIRS}) - set(HAVE_VTK ON) - else () - set(HAVE_VTK OFF) - message (FATAL_ERROR "VTK disabled. You are to build OpenCV in STATIC but VTK is SHARED!") - endif () - endif() -endmacro() - -if (NOT OPENCV_INITIAL_PASS AND DEFINED BUILD_opencv_viz AND BUILD_opencv_viz) - find_vtk() -endif() - -if(DEFINED HAVE_VTK AND HAVE_VTK) - set(VTK_USE_FILE ${VTK_USE_FILE} CACHE INTERNAL "VTK_USE_FILE") - include (${VTK_USE_FILE}) - add_definitions(-DHAVE_VTK) +if(NOT WITH_VTK OR NOT DEFINED HAVE_VTK OR NOT HAVE_VTK) + return() endif() +include(${VTK_USE_FILE}) set(the_description "Viz") -set(BUILD_opencv_viz_INIT OFF) -include_directories(src) -ocv_define_module(viz opencv_core) +ocv_define_module(viz opencv_core ${VTK_LIBRARIES}) -if(DEFINED BUILD_opencv_viz AND BUILD_opencv_viz AND DEFINED HAVE_VTK AND HAVE_VTK) - if (${VTK_VERSION_MAJOR} EQUAL 5) - target_link_libraries(opencv_viz vtkCommon vtkWidgets vtkFiltering vtkRendering) - else() - target_link_libraries(opencv_viz vtkViewsCore vtkRenderingLOD vtkIOPLY vtkRenderingFreeTypeOpenGL vtkRenderingVolumeOpenGL vtkFiltersTexture) - endif() - if(APPLE) - target_link_libraries(opencv_viz "-framework Cocoa") - endif() +if(APPLE AND BUILD_opencv_viz) + target_link_libraries(opencv_viz "-framework Cocoa") endif() diff --git a/modules/viz/include/opencv2/viz/viz3d.hpp b/modules/viz/include/opencv2/viz/viz3d.hpp index fe19c6172..f19709eb5 100644 --- a/modules/viz/include/opencv2/viz/viz3d.hpp +++ b/modules/viz/include/opencv2/viz/viz3d.hpp @@ -49,7 +49,7 @@ #ifndef __OPENCV_VIZ_VIZ3D_HPP__ #define __OPENCV_VIZ_VIZ3D_HPP__ -#if !defined YES_I_AGREE_THAT_VIZ_API_IS_NOT_STABLE_NOW_AND_BINARY_COMPARTIBILITY_WONT_BE_SUPPORTED +#if !defined YES_I_AGREE_THAT_VIZ_API_IS_NOT_STABLE_NOW_AND_BINARY_COMPARTIBILITY_WONT_BE_SUPPORTED && !defined CVAPI_EXPORTS //#error "Viz is in beta state now. Please define macro above to use it" #endif