1
0
mirror of https://github.com/opencv/opencv_contrib.git synced 2025-10-18 00:01:17 +08:00
Files
opencv_contrib/modules/sfm/CMakeLists.txt
Ted Steiner fe71b09f88 sfm module calls imread function, which is in imgcodecs module
This built correctly before because tests were run with the highgui module enabled.
The sfm module links against the features2d module, which brings in the highgui module as an optional target if enabled.
Through this path, imread was working correctly despite the file including the wrong header and not declaring its linking dependency.
2019-02-19 19:56:32 -05:00

143 lines
3.7 KiB
CMake

set(OPENCV_MODULE_IS_PART_OF_WORLD FALSE)
set(the_description "SFM algorithms")
### LIBMV LIGHT EXTERNAL DEPENDENCIES ###
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
find_package(Gflags QUIET)
find_package(Ceres QUIET)
if(NOT Ceres_FOUND) # Looks like Ceres find glog on the own, so separate search isn't necessary
find_package(Glog QUIET)
endif()
if((gflags_FOUND OR GFLAGS_FOUND OR GFLAGS_INCLUDE_DIRS) AND (glog_FOUND OR GLOG_FOUND OR GLOG_INCLUDE_DIRS))
set(_fname "${CMAKE_CURRENT_BINARY_DIR}/test_sfm_deps.cpp")
file(WRITE "${_fname}" "#include <glog/logging.h>\n#include <gflags/gflags.h>\nint main() { (void)(0); return 0; }\n")
try_compile(SFM_DEPS_OK "${CMAKE_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}")
else()
set(SFM_DEPS_OK FALSE)
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
"${CMAKE_CURRENT_LIST_DIR}/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)
list(APPEND LIBMV_LIGHT_INCLUDES "${CERES_INCLUDE_DIR}")
else()
add_definitions("-DCERES_FOUND=0")
message(STATUS "CERES support is disabled. Ceres Solver for reconstruction API is required.")
endif()
### COMPILE WITH C++11 IF CERES WAS COMPILED WITH C++11
if(Ceres_FOUND)
list (FIND CERES_COMPILED_COMPONENTS "C++11" _index)
if (${_index} GREATER -1)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
endif()
endif()
### DEFINE OPENCV SFM MODULE DEPENDENCIES ###
### CREATE OPENCV SFM MODULE ###
ocv_add_module(sfm
opencv_core
opencv_calib3d
opencv_features2d
opencv_xfeatures2d
opencv_imgcodecs
WRAP python
)
ocv_warnings_disable(CMAKE_CXX_FLAGS
-Wundef
-Wshadow
-Wsign-compare
-Wmissing-declarations
-Wunused-but-set-variable
-Wunused-parameter
-Wunused-function
-Wsuggest-override
)
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("${CMAKE_CURRENT_LIST_DIR}/src/libmv_light" "${CMAKE_CURRENT_BINARY_DIR}/src/libmv")
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 ()