mirror of https://github.com/microsoft/vcpkg.git
235 lines
9.1 KiB
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 "")
|