libdart_openmvg/src/CMakeLists.txt

172 lines
3.8 KiB
CMake

# The Flutter tooling requires that developers have CMake 3.10 or later
# installed. You should not increase this version, as doing so will cause
# the plugin to fail to compile for some customers of the plugin.
cmake_minimum_required(VERSION 3.10)
set(LIBDART_OPENMVG libdart_openmvg)
project(libdart_openmvg VERSION 0.0.1 LANGUAGES CXX)
enable_language(CXX)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
function(dump_cmake_variables)
get_cmake_property(_variableNames VARIABLES)
list (SORT _variableNames)
foreach (_variableName ${_variableNames})
if (ARGV0)
unset(MATCHED)
#case sensitive match
# string(REGEX MATCH ${ARGV0} MATCHED ${_variableName})
#
#case insenstitive match
string( TOLOWER "${ARGV0}" ARGV0_lower )
string( TOLOWER "${_variableName}" _variableName_lower )
string(REGEX MATCH ${ARGV0_lower} MATCHED ${_variableName_lower})
if (NOT MATCHED)
continue()
endif()
endif()
message(STATUS "${_variableName}=${${_variableName}}")
endforeach()
endfunction()
set (FFMPEG_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../../ffmpeg_install/include)
set (ARCHIMEDES_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR})
set (LIBDART_OPENMVG_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/src)
find_package(JPEG REQUIRED)
find_package(TIFF REQUIRED)
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/extlib/cwalk)
# OPENMVG
find_package(OpenMVG
REQUIRED
PATHS "../../openMVG/build/_install"
)
dump_cmake_variables("^OPENMVG")
include_directories(${OpenMVG_INCLUDE_DIRS})
set(PNG_SHARED ON CACHE BOOL "" FORCE)
set(PNG_STATIC OFF CACHE BOOL "" FORCE)
set(PNG_EXECUTABLES OFF CACHE BOOL "" FORCE) # we only want lib
set(PNG_TESTS OFF CACHE BOOL "" FORCE) # we only want lib
set(SKIP_INSTALL_ALL OFF CACHE BOOL "" FORCE) # we only want lib
add_definitions(${PNG_DEFINITIONS})
add_library(${LIBDART_OPENMVG} SHARED
"frame.cxx"
"streamingview.cxx"
"image.cxx"
)
set(CEREAL_INCLUDE_DIR ${OpenMVG_DIR}/../../../include/openMVG_dependencies/cereal/include/cereal/)
target_include_directories(
${LIBDART_OPENMVG}
PRIVATE
${FFMPEG_INCLUDE_DIRS}
${PNG_INCLUDE_DIRS}
${ARCHIMEDES_INCLUDE_DIRS}
${CEREAL_INCLUDE_DIR}
)
target_link_libraries(
${LIBDART_OPENMVG}
cwalk
jpeg
tiff
png
OpenMVG::openMVG_image
OpenMVG::openMVG_numeric
OpenMVG::openMVG_features
OpenMVG::openMVG_sfm
OpenMVG::openMVG_exif
)
set_target_properties(${LIBDART_OPENMVG}
PROPERTIES
PUBLIC_HEADER image.h
OUTPUT_NAME ${LIBDART_OPENMVG}
)
target_link_options(${LIBDART_OPENMVG} PRIVATE "-Wl,-Bdynamic")
add_executable(
test_image
${CMAKE_CURRENT_SOURCE_DIR}/tests/test_image.cxx
${CMAKE_CURRENT_SOURCE_DIR}/util.cpp
)
add_executable(
test_frame
${CMAKE_CURRENT_SOURCE_DIR}/tests/test_frame.cxx
${CMAKE_CURRENT_SOURCE_DIR}/util.cpp
)
target_link_libraries(
test_image
cunit
cwalk
${LIBDART_OPENMVG}
png
OpenMVG::openMVG_image
OpenMVG::openMVG_numeric
OpenMVG::openMVG_features
OpenMVG::openMVG_sfm
OpenMVG::openMVG_features
OpenMVG::openMVG_exif
)
target_link_libraries(
test_frame
cunit
cwalk
${LIBDART_OPENMVG}
png
OpenMVG::openMVG_image
OpenMVG::openMVG_numeric
OpenMVG::openMVG_features
OpenMVG::openMVG_sfm
OpenMVG::openMVG_features
OpenMVG::openMVG_exif
)
target_include_directories(
test_image
PRIVATE
${LIBDART_OPENMVG_INCLUDE_DIRS}
${OpenMVG_INCLUDE_DIRS}/src
${CEREAL_INCLUDE_DIR}
)
target_include_directories(
test_frame
PRIVATE
${LIBDART_OPENMVG_INCLUDE_DIRS}
${OpenMVG_INCLUDE_DIRS}/src
${CEREAL_INCLUDE_DIR}
)
set_target_properties(
test_image
PROPERTIES
LINKER_LANGUAGE CXX
)
add_test (
NAME test_image
COMMAND test_image
)
add_test (
NAME test_frame
COMMAND test_frame
)
target_compile_definitions(${LIBDART_OPENMVG} PUBLIC DART_SHARED_LIB)