set(the_description "SFM algorithms") ### LIBMV LIGHT EXTERNAL DEPENDENCIES ### find_package(Ceres QUIET) if(NOT DEFINED GFLAGS_LIBRARIES) set(GFLAGS_LIBRARIES "gflags") endif() if(NOT DEFINED GLOG_LIBRARIES) set(GLOG_LIBRARIES "glog") endif() if(NOT DEFINED SFM_DEPS_OK) set(_fname "${CMAKE_CURRENT_BINARY_DIR}/test_sfm_deps.cpp") file(WRITE "${_fname}" "#include \n#include \nint main() { (void)(0); return 0; }\n") try_compile(SFM_DEPS_OK "${CMAKE_CURRENT_BINARY_DIR}" "${_fname}" CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${GLOG_INCLUDE_DIRS};${GFLAGS_INCLUDE_DIRS}" LINK_LIBRARIES ${GLOG_LIBRARIES} ${GFLAGS_LIBRARIES} OUTPUT_VARIABLE OUTPUT ) file(REMOVE "${_fname}") message(STATUS "Checking SFM deps... ${SFM_DEPS_OK}") endif() if(NOT HAVE_EIGEN OR NOT SFM_DEPS_OK) set(DISABLE_MSG "Module opencv_sfm disabled because the following dependencies are not found:") if(NOT HAVE_EIGEN) set(DISABLE_MSG "${DISABLE_MSG} Eigen") endif() if(NOT SFM_DEPS_OK) set(DISABLE_MSG "${DISABLE_MSG} Glog/Gflags") endif() message(STATUS ${DISABLE_MSG}) ocv_module_disable(sfm) endif() ### LIBMV LIGHT DEFINITIONS ### set(LIBMV_LIGHT_INCLUDES src/libmv_light "${OpenCV_SOURCE_DIR}/include/opencv" "${GLOG_INCLUDE_DIRS}" "${GFLAGS_INCLUDE_DIRS}" ) set(LIBMV_LIGHT_LIBS correspondence multiview numeric ${GLOG_LIBRARIES} ${GFLAGS_LIBRARIES} ) if(Ceres_FOUND) add_definitions("-DCERES_FOUND=1") list(APPEND LIBMV_LIGHT_LIBS simple_pipeline) else() add_definitions("-DCERES_FOUND=0") message(STATUS "CERES support is disabled. Ceres Solver for reconstruction API is required.") endif() ### DEFINE OPENCV SFM MODULE DEPENDENCIES ### ### CREATE OPENCV SFM MODULE ### ocv_add_module(sfm opencv_core opencv_calib3d opencv_features2d opencv_xfeatures2d WRAP python ) ocv_warnings_disable(CMAKE_CXX_FLAGS -Wundef -Wshadow -Wsign-compare -Wmissing-declarations -Wunused-but-set-variable -Wunused-parameter -Wunused-function ) if(UNIX) if(CMAKE_COMPILER_IS_GNUCXX OR CV_ICC) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") endif() endif() ocv_include_directories( ${LIBMV_LIGHT_INCLUDES} ) ocv_module_include_directories() # source files FILE(GLOB OPENCV_SFM_SRC src/*.cpp) # define the header files (make the headers appear in IDEs.) FILE(GLOB OPENCV_SFM_HDRS include/opencv2/sfm.hpp include/opencv2/sfm/*.hpp) ocv_set_module_sources(HEADERS ${OPENCV_SFM_HDRS} SOURCES ${OPENCV_SFM_SRC}) ocv_create_module() # build libmv_light if(NOT CMAKE_VERSION VERSION_LESS 2.8.11) # See ocv_target_include_directories() implementation if(TARGET ${the_module}) get_target_property(__include_dirs ${the_module} INCLUDE_DIRECTORIES) include_directories(${__include_dirs}) endif() endif() include_directories(${OCV_TARGET_INCLUDE_DIRS_${the_module}}) add_subdirectory(src/libmv_light) ocv_target_link_libraries(${the_module} ${LIBMV_LIGHT_LIBS}) ### CREATE OPENCV SFM TESTS ### ocv_add_accuracy_tests() ### CREATE OPENCV SFM SAMPLES ### if(Ceres_FOUND) ocv_add_samples(opencv_viz) endif ()