vcpkg/ports/openmvs/cmake.diff

235 lines
9.1 KiB
Diff

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 920e4c3..3e62a68 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -87,8 +87,8 @@ if(OpenMVS_USE_OPENMP)
#https://github.com/Kitware/CMake/blob/42212f7539040139ecec092547b7d58ef12a4d72/Modules/FindOpenMP.cmake#L252
if (CMAKE_CXX_COMPILER_ID MATCHES "AppleClang" AND (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS "7.0"))
SET(OpenMP_LIBS ${OpenMP_libomp_LIBRARY})
- LIST(APPEND OpenMVS_EXTRA_LIBS ${OpenMP_LIBS})
endif()
+ LIST(APPEND OpenMVS_EXTRA_LIBS OpenMP::OpenMP_CXX)
else()
MESSAGE("-- Can't find OpenMP. Continuing without it.")
endif()
@@ -109,7 +109,10 @@ if(OpenMVS_USE_OPENGL)
endif()
if(OpenMVS_USE_CUDA)
- FIND_PACKAGE(CUDA)
+ FIND_PACKAGE(CUDAToolkit REQUIRED)
+ set(CUDA_FOUND 1)
+ set(CUDA_INCLUDE_DIRS "${CUDAToolkit_INCLUDE_DIRS}")
+ set(CUDA_CUDA_LIBRARY CUDA::cuda_driver)
if(CUDA_FOUND)
ENABLE_LANGUAGE(CUDA)
# CUDA-11.x can not be compiled using C++14 standard on Windows
@@ -190,15 +193,10 @@ if(OpenMVS_USE_PYTHON)
endif()
endif()
-FIND_PACKAGE(Boost REQUIRED COMPONENTS iostreams program_options system serialization OPTIONAL_COMPONENTS ${Boost_EXTRA_COMPONENTS})
+FIND_PACKAGE(Boost REQUIRED COMPONENTS assert graph iostreams pool serialization throw_exception OPTIONAL_COMPONENTS ${Boost_EXTRA_COMPONENTS})
if(Boost_FOUND)
LIST(APPEND OpenMVS_EXTRA_INCLUDES ${Boost_INCLUDE_DIRS})
- INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
- ADD_DEFINITIONS(${Boost_DEFINITIONS})
- LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
if(NOT MSVC AND DEFINED CMAKE_TOOLCHAIN_FILE)
- # work around this missing library link in vcpkg
- LIST(APPEND Boost_LIBRARIES zstd)
endif()
SET(_USE_BOOST TRUE)
if(OpenMVS_USE_PYTHON AND Boost_${Boost_EXTRA_COMPONENTS}_FOUND)
@@ -206,11 +204,9 @@ if(Boost_FOUND)
endif()
endif()
-FIND_PACKAGE(Eigen3 3.4 REQUIRED)
+FIND_PACKAGE(Eigen3 CONFIG REQUIRED)
+set(EIGEN3_FOUND 1)
if(EIGEN3_FOUND)
- LIST(APPEND OpenMVS_EXTRA_INCLUDES ${EIGEN3_INCLUDE_DIR})
- INCLUDE_DIRECTORIES(${EIGEN3_INCLUDE_DIR})
- ADD_DEFINITIONS(${EIGEN3_DEFINITIONS})
SET(_USE_EIGEN TRUE)
MESSAGE(STATUS "Eigen ${EIGEN3_VERSION} found (include: ${EIGEN3_INCLUDE_DIR})")
endif()
@@ -282,11 +278,11 @@ INCLUDE(CMakePackageConfigHelpers)
write_basic_package_version_file("${PROJECT_BINARY_DIR}/OpenMVSConfigVersion.cmake"
VERSION ${OpenMVS_VERSION}
COMPATIBILITY AnyNewerVersion)
-SET(INSTALL_INCLUDE_DIR_IN ${INSTALL_INCLUDE_DIR_PREFIX} ${OpenMVS_EXTRA_INCLUDES})
-SET(INSTALL_CMAKE_DIR_IN ${INSTALL_CMAKE_DIR_PREFIX})
+SET(INSTALL_INCLUDE_DIR_IN "${CMAKE_INSTALL_PREFIX}/${INSTALL_INCLUDE_DIR}" ${OpenMVS_EXTRA_INCLUDES})
+SET(INSTALL_CMAKE_DIR_IN "${CMAKE_INSTALL_PREFIX}/${INSTALL_CMAKE_DIR}")
configure_package_config_file("${CMAKE_CURRENT_SOURCE_DIR}/build/Templates/OpenMVSConfig.cmake.in"
"${PROJECT_BINARY_DIR}/OpenMVSConfig.cmake"
- INSTALL_DESTINATION ${PROJECT_BINARY_DIR}
+ INSTALL_DESTINATION "${INSTALL_CMAKE_DIR}"
NO_SET_AND_CHECK_MACRO)
# Install the OpenMVSConfig.cmake and OpenMVSConfigVersion.cmake
INSTALL(FILES
diff --git a/apps/CMakeLists.txt b/apps/CMakeLists.txt
index 3bb00c6..e54c840 100644
--- a/apps/CMakeLists.txt
+++ b/apps/CMakeLists.txt
@@ -1,3 +1,5 @@
+find_package(Boost COMPONENTS program_options)
+list(APPEND OpenMVS_EXTRA_LIBS Boost::program_options)
# Add applications
ADD_SUBDIRECTORY(InterfaceCOLMAP)
ADD_SUBDIRECTORY(InterfaceMetashape)
diff --git a/build/Templates/OpenMVSConfig.cmake.in b/build/Templates/OpenMVSConfig.cmake.in
index 9747b3e..514f5a0 100644
--- a/build/Templates/OpenMVSConfig.cmake.in
+++ b/build/Templates/OpenMVSConfig.cmake.in
@@ -15,8 +15,27 @@ set(OpenMVS_INCLUDE_DIRS "@INSTALL_INCLUDE_DIR_IN@")
set(OpenMVS_DEFINITIONS "@OpenMVS_DEFINITIONS@")
+include(CMakeFindDependencyMacro)
+find_dependency(Boost COMPONENTS iostreams pool serialization throw_exception)
+find_dependency(Eigen3 CONFIG)
+find_dependency(OpenCV)
+find_dependency(CGAL)
+if("@OpenMVS_USE_CERES@")
+ find_dependency(Ceres)
+endif()
+if("@OpenMVS_USE_CUDA@")
+ find_dependency(CUDAToolkit)
+ list(APPEND OpenMVS_INCLUDE_DIRS ${CUDAToolkit_INCLUDE_DIRS})
+endif()
+if("@OpenMVS_USE_OPENGL@")
+ find_dependency(OpenGL)
+endif()
+if("@OpenMVS_USE_OPENMP@")
+ find_dependency(OpenMP COMPONENTS CXX)
+endif()
+
# These are IMPORTED targets created by OpenMVSTargets.cmake
-set(OpenMVS_LIBRARIES MVS)
+set(OpenMVS_LIBRARIES OpenMVS::MVS)
set(OpenMVS_BINARIES InterfaceCOLMAP DensifyPointCloud ReconstructMesh RefineMesh TextureMesh)
include("${CMAKE_CURRENT_LIST_DIR}/OpenMVSTargets.cmake")
diff --git a/build/Utils.cmake b/build/Utils.cmake
index 86d3430..b69fe50 100644
--- a/build/Utils.cmake
+++ b/build/Utils.cmake
@@ -119,6 +119,7 @@ macro(GetOperatingSystemArchitectureBitness)
# Detect GNU version:
set(CMAKE_FLG_GCC_VERSION_NUM 0)
if(CMAKE_COMPILER_IS_GNUCXX)
+ if(0) # informational, breaking for Android
execute_process(COMMAND ${CMAKE_CXX_COMPILER} --version
OUTPUT_VARIABLE CMAKE_FLG_GCC_VERSION_FULL
OUTPUT_STRIP_TRAILING_WHITESPACE)
@@ -144,6 +145,7 @@ macro(GetOperatingSystemArchitectureBitness)
set(CMAKE_FLG_GCC_VERSION ${CMAKE_FLG_GCC_VERSION_MAJOR}${CMAKE_FLG_GCC_VERSION_MINOR})
math(EXPR CMAKE_FLG_GCC_VERSION_NUM "${CMAKE_FLG_GCC_VERSION_MAJOR}*100 + ${CMAKE_FLG_GCC_VERSION_MINOR}")
message(STATUS "Detected version of GNU GCC: ${CMAKE_FLG_GCC_VERSION} (${CMAKE_FLG_GCC_VERSION_NUM})")
+ endif()
if(WIN32)
execute_process(COMMAND ${CMAKE_CXX_COMPILER} -dumpmachine
@@ -174,6 +176,7 @@ macro(ComposePackageLibSuffix)
set(PACKAGE_LIB_SUFFIX_DBG "")
set(PACKAGE_LIB_SUFFIX_REL "")
if(MSVC)
+ elseif(0) # do not use subdirs per vc version/config
if("${MSVC_VERSION}" STRGREATER "1929")
set(PACKAGE_LIB_SUFFIX "/vc17")
elseif("${MSVC_VERSION}" STRGREATER "1916")
@@ -422,6 +425,7 @@ macro(optimize_default_compiler_settings)
endif()
else()
list(FIND CMAKE_CXX_COMPILE_FEATURES "cxx_std_20" CXX_STD_INDEX)
+ set(CXX_STD_INDEX -1) # std::shared_ptr<>::unique() in libs/Common/FastDelegateCPP11.h
if(${CXX_STD_INDEX} GREATER -1)
set(CMAKE_CXX_STANDARD 20)
else()
@@ -624,7 +628,7 @@ macro(optimize_default_compiler_settings)
if(NOT MSVC64)
# 64-bit MSVC compiler uses SSE/SSE2 by default
- if(ENABLE_SSE)
+ if(ENABLE_SSE AND NOT ENABLE_SSE2)
set(BUILD_EXTRA_FLAGS "${BUILD_EXTRA_FLAGS} /arch:SSE")
endif()
if(ENABLE_SSE2)
@@ -819,6 +823,7 @@ macro(ConfigLibrary)
set(INSTALL_CMAKE_DIR ${DEF_INSTALL_CMAKE_DIR} CACHE PATH "Installation directory for CMake files")
# Make relative paths absolute (needed later on)
foreach(p LIB BIN INCLUDE CMAKE)
+ break() # keep relative paths
set(var INSTALL_${p}_DIR)
set(varp INSTALL_${p}_DIR_PREFIX)
if(IS_ABSOLUTE "${${varp}}")
@@ -847,6 +852,10 @@ function(cxx_library_with_type name folder type cxx_flags)
if(BUILD_SHARED_LIBS OR PARTIAL_BUILD_SHARED_LIBS)
set_target_properties("${name}" PROPERTIES POSITION_INDEPENDENT_CODE ON)
endif()
+ set(ambiguous_names Common IO Math)
+ if(name IN_LIST ambiguous_names)
+ set_target_properties("${name}" PROPERTIES OUTPUT_NAME "MVS_${name}")
+ endif()
endfunction()
# cxx_executable_with_flags(name cxx_flags libs srcs...)
diff --git a/libs/Common/CMakeLists.txt b/libs/Common/CMakeLists.txt
index 18899af..258ada0 100644
--- a/libs/Common/CMakeLists.txt
+++ b/libs/Common/CMakeLists.txt
@@ -12,7 +12,18 @@ IF(CMAKE_VERSION VERSION_GREATER_EQUAL 3.16.0)
endif()
# Link its dependencies
-TARGET_LINK_LIBRARIES(Common ${Boost_LIBRARIES} ${OpenCV_LIBS})
+TARGET_LINK_LIBRARIES(Common
+ $<BUILD_INTERFACE:Boost::assert>
+ Boost::iostreams
+ Boost::pool
+ Boost::serialization
+ Boost::throw_exception
+ ${OpenCV_LIBS}
+ Eigen3::Eigen
+)
+if(BUILD_EXTRA_FLAGS MATCHES "/Zc:__cplusplus")
+ target_compile_options(Common PUBLIC "$<$<CXX_COMPILER_ID:MSVC>:-Zc:__cplusplus>")
+endif()
# Install
SET_TARGET_PROPERTIES(Common PROPERTIES
diff --git a/libs/MVS/CMakeLists.txt b/libs/MVS/CMakeLists.txt
index 8533865..8b3100d 100644
--- a/libs/MVS/CMakeLists.txt
+++ b/libs/MVS/CMakeLists.txt
@@ -45,20 +45,19 @@ IF(CMAKE_VERSION VERSION_GREATER_EQUAL 3.16.0)
endif()
# Link its dependencies
-if(_USE_CUDA)
- SET_TARGET_PROPERTIES(MVS PROPERTIES CUDA_ARCHITECTURES "50;72;75")
+TARGET_LINK_LIBRARIES(MVS PRIVATE Math IO CGAL::CGAL ${CERES_LIBRARIES} ${CUDA_CUDA_LIBRARY})
+TARGET_LINK_LIBRARIES(MVS PUBLIC Common)
+TARGET_LINK_LIBRARIES(MVS PRIVATE $<BUILD_INTERFACE:Boost::graph>)
+if(OpenMVS_USE_OPENMP)
+ target_link_libraries(MVS PRIVATE "$<INSTALL_INTERFACE:OpenMP::OpenMP_CXX>")
endif()
-TARGET_LINK_LIBRARIES(MVS PRIVATE Common Math IO CGAL::CGAL ${CERES_LIBRARIES} ${CUDA_CUDA_LIBRARY})
+TARGET_INCLUDE_DIRECTORIES(MVS PUBLIC "$<INSTALL_INTERFACE:${INSTALL_INCLUDE_DIR}>")
if(OpenMVS_USE_PYTHON)
# Create the Python wrapper
cxx_library_with_type(pyOpenMVS "Libs" "SHARED" "${cxx_default}"
${PATH_PythonWrapper_cpp}
)
- # Link its dependencies
- if(_USE_CUDA)
- SET_TARGET_PROPERTIES(pyOpenMVS PROPERTIES CUDA_ARCHITECTURES "50;72;75")
- endif()
TARGET_LINK_LIBRARIES(pyOpenMVS PRIVATE MVS ${OpenMVS_EXTRA_LIBS})
# Suppress prefix "lib" because Python does not allow this prefix
SET_TARGET_PROPERTIES(pyOpenMVS PROPERTIES PREFIX "")