2011-06-05 14:45:39 +00:00
# Top-Level CmakeLists.txt
2024-03-23 14:32:18 -07:00
cmake_minimum_required ( VERSION 3.14 )
2026-03-15 14:57:27 -07:00
2013-12-11 00:12:44 +00:00
PROJECT ( RTABMap )
2011-06-05 14:45:39 +00:00
SET ( PROJECT_PREFIX rtabmap )
2015-01-12 14:33:40 -05:00
# Catkin doesn't support multiarch library path,
# fix to "lib" if not set by user.
2016-07-17 20:12:13 -04:00
OPTION ( MULTI_ARCH "Activate multi-arch lib directory (debian)" OFF )
IF ( NOT MULTI_ARCH AND NOT DEFINED CMAKE_INSTALL_LIBDIR )
set ( CMAKE_INSTALL_LIBDIR "lib" )
ENDIF ( NOT MULTI_ARCH AND NOT DEFINED CMAKE_INSTALL_LIBDIR )
2015-01-12 14:33:40 -05:00
2014-12-17 17:28:21 +01:00
INCLUDE ( GNUInstallDirs )
2026-03-15 14:57:27 -07:00
INCLUDE ( FetchContent )
2014-12-17 17:28:21 +01:00
2011-06-05 14:45:39 +00:00
####### local cmake modules #######
SET ( CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake_modules" )
#######################
# VERSION
#######################
2013-12-11 00:12:44 +00:00
SET ( RTABMAP_MAJOR_VERSION 0 )
2025-09-03 16:55:54 -07:00
SET ( RTABMAP_MINOR_VERSION 23 )
2026-08-23 13:21:46 -07:00
SET ( RTABMAP_PATCH_VERSION 11 )
2013-12-11 00:12:44 +00:00
SET ( RTABMAP_VERSION
${ RTABMAP_MAJOR_VERSION } . ${ RTABMAP_MINOR_VERSION } . ${ RTABMAP_PATCH_VERSION } )
2026-05-04 20:12:31 -07:00
# Make sure we have valid version so that RTABMAP_VERSION_COMPARE logic in Version.h works
IF ( RTABMAP_MINOR_VERSION GREATER 99 )
MESSAGE ( FATAL_ERROR "RTABMAP_MINOR_VERSION must be < 100, bump major version and restart minor to 0!" )
ENDIF ()
IF ( RTABMAP_PATCH_VERSION GREATER 99 )
MESSAGE ( FATAL_ERROR "RTABMAP_PATCH_VERSION must be < 100, bump minor version and restart patch to 0!" )
ENDIF ()
2013-12-11 00:12:44 +00:00
SET ( PROJECT_VERSION "${RTABMAP_VERSION}" )
2011-06-05 14:45:39 +00:00
2013-12-11 00:12:44 +00:00
SET ( PROJECT_VERSION_MAJOR ${ RTABMAP_MAJOR_VERSION } )
SET ( PROJECT_VERSION_MINOR ${ RTABMAP_MINOR_VERSION } )
SET ( PROJECT_VERSION_PATCH ${ RTABMAP_PATCH_VERSION } )
2011-06-05 14:45:39 +00:00
SET ( PROJECT_SOVERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}" )
####### COMPILATION PARAMS #######
# In case of Makefiles if the user does not setup CMAKE_BUILD_TYPE, assume it's Release:
IF ( ${ CMAKE_GENERATOR } MATCHES ".*Makefiles" )
IF ( "${CMAKE_BUILD_TYPE}" STREQUAL "" )
set ( CMAKE_BUILD_TYPE Release )
ENDIF ( "${CMAKE_BUILD_TYPE}" STREQUAL "" )
ENDIF ( ${ CMAKE_GENERATOR } MATCHES ".*Makefiles" )
2021-06-08 00:06:49 -04:00
SET ( MOBILE_BUILD OFF )
IF ( ANDROID OR CMAKE_SYSTEM_NAME STREQUAL "iOS" )
SET ( MOBILE_BUILD ON )
ENDIF ( ANDROID OR CMAKE_SYSTEM_NAME STREQUAL "iOS" )
MESSAGE ( STATUS "MOBILE_BUILD=${MOBILE_BUILD}" )
IF ( NOT MOBILE_BUILD )
2016-02-15 19:35:24 -05:00
SET ( CMAKE_DEBUG_POSTFIX "d" )
2019-02-07 20:52:20 -05:00
option ( FLANN_KDTREE_MEM_OPT "Disable multi-threaded FLANN kd-tree to minimize memory allocations" OFF )
ELSE ()
option ( FLANN_KDTREE_MEM_OPT "Disable multi-threaded FLANN kd-tree to minimize memory allocations" ON )
ENDIF ()
2011-06-05 14:45:39 +00:00
IF ( WIN32 AND NOT MINGW )
2017-05-17 16:59:35 -04:00
ADD_DEFINITIONS ( "-DNOMINMAX" )
2015-11-03 12:49:03 -05:00
ADD_DEFINITIONS ( "-wd4100 -wd4127 -wd4150 -wd4191 -wd4242 -wd4244 -wd4251 -wd4305 -wd4365 -wd4512 -wd4514 -wd4548 -wd4571 -wd4619 -wd4625 -wd4626 -wd4628 -wd4668 -wd4710 -wd4711 -wd4738 -wd4820 -wd4946 -wd4986" )
2011-06-05 14:45:39 +00:00
ELSE ()
2024-11-15 14:13:13 -08:00
ADD_DEFINITIONS ( "-Wall -Wtype-limits" )
2017-05-17 16:59:35 -04:00
ADD_DEFINITIONS ( "-Wno-unknown-pragmas" )
2011-06-05 14:45:39 +00:00
ENDIF ()
2016-08-11 14:13:29 -04:00
if ( POLICY CMP0020 )
2020-10-09 11:10:21 -04:00
cmake_policy ( SET CMP0020 NEW )
2016-08-11 14:13:29 -04:00
endif ()
if ( POLICY CMP0043 )
2023-02-22 23:07:30 -08:00
cmake_policy ( SET CMP0043 NEW )
endif ()
# To suppress g2o related opengl warning
if ( POLICY CMP0072 )
cmake_policy ( SET CMP0072 NEW )
2016-08-11 14:13:29 -04:00
endif ()
2026-08-06 14:21:43 -07:00
# Timestamp the files extracted from a FetchContent URL download at extraction
# time, so a changed URL actually triggers a rebuild of what depends on them.
if ( POLICY CMP0135 )
cmake_policy ( SET CMP0135 NEW )
endif ()
2016-08-11 14:13:29 -04:00
2011-06-05 14:45:39 +00:00
IF ( MINGW )
# Hide the --enable-auto-import warning
2017-05-17 16:59:35 -04:00
SET ( CMAKE_EXE_LINKER_FLAGS "-Wl,--enable-auto-import" )
SET ( CMAKE_MODULE_LINKER_FLAGS "-Wl,--enable-auto-import" )
SET ( CMAKE_SHARED_LINKER_FLAGS "-Wl,--enable-auto-import" )
2011-06-05 14:45:39 +00:00
ENDIF ( MINGW )
#The CDT Error Parser cannot handle error messages that span
#more than one line, which is the default gcc behavior.
#In order to force gcc to generate single line error messages with no line wrapping
IF ( CMAKE_COMPILER_IS_GNUCC )
SET ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fmessage-length=0" )
ENDIF ( CMAKE_COMPILER_IS_GNUCC )
IF ( CMAKE_COMPILER_IS_GNUCXX )
SET ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fmessage-length=0" )
ENDIF ( CMAKE_COMPILER_IS_GNUCXX )
2018-11-01 18:07:52 -04:00
if ( MSVC )
2018-11-01 17:49:18 -04:00
if ( MSVC_VERSION GREATER 1500 AND ${ CMAKE_VERSION } VERSION_GREATER "2.8.6" )
include ( ProcessorCount )
ProcessorCount ( N )
if ( NOT N EQUAL 0 )
SET ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP${N}" )
SET ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP${N}" )
endif ()
endif ()
2023-01-22 07:50:02 +08:00
add_compile_options ( "/bigobj" )
2018-11-01 17:49:18 -04:00
endif ()
2011-06-05 14:45:39 +00:00
# [Eclipse] Automatic Discovery of Include directories (Optional, but handy)
#SET(CMAKE_VERBOSE_MAKEFILE ON)
2014-01-24 21:42:35 +00:00
#Other paths...
IF ( APPLE )
2012-03-03 01:46:30 +00:00
# For Mac ports
SET ( CMAKE_INCLUDE_PATH "/opt/local/include;${CMAKE_INCLUDE_PATH}" )
SET ( CMAKE_LIBRARY_PATH "/opt/local/lib;${CMAKE_LIBRARY_PATH}" )
ENDIF ()
2011-06-05 14:45:39 +00:00
####### Build libraries as shared or static #######
2012-06-24 17:19:34 +00:00
OPTION ( BUILD_SHARED_LIBS "Set to OFF to build static libraries" ON )
2011-06-05 14:45:39 +00:00
####### OUTPUT DIR #######
2021-11-14 19:29:37 -05:00
SET ( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${ PROJECT_BINARY_DIR } /bin )
SET ( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${ PROJECT_BINARY_DIR } /bin )
SET ( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${ PROJECT_BINARY_DIR } /lib )
2011-06-05 14:45:39 +00:00
2015-04-01 11:29:40 -04:00
# Avoid Visual Studio bin/Release and bin/Debug sub directories
SET ( CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" )
SET ( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" )
SET ( CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}" )
SET ( CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}" )
SET ( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG "${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}" )
SET ( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE "${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}" )
2013-12-11 00:12:44 +00:00
####### INSTALL DIR #######
2018-03-27 15:50:27 -04:00
set ( INSTALL_INCLUDE_DIR include/ ${ PROJECT_PREFIX } - ${ RTABMAP_MAJOR_VERSION } . ${ RTABMAP_MINOR_VERSION } )
2013-12-11 00:12:44 +00:00
if ( WIN32 AND NOT CYGWIN )
set ( DEF_INSTALL_CMAKE_DIR CMake )
else ()
2015-01-12 14:33:40 -05:00
set ( DEF_INSTALL_CMAKE_DIR ${ CMAKE_INSTALL_LIBDIR } / ${ PROJECT_PREFIX } - ${ RTABMAP_MAJOR_VERSION } . ${ RTABMAP_MINOR_VERSION } )
2013-12-11 00:12:44 +00:00
endif ()
2018-03-27 15:50:27 -04:00
set ( INSTALL_CMAKE_DIR ${ DEF_INSTALL_CMAKE_DIR } )
2013-12-11 00:12:44 +00:00
2012-06-24 17:19:34 +00:00
####### BUILD OPTIONS #######
2023-02-12 16:47:55 -08:00
include ( GenerateExportHeader )
2017-07-13 14:14:51 -04:00
# ANDROID_PREBUILD (early exit if true)
OPTION ( ANDROID_PREBUILD "Set to ON to build rtabmap resource build tool (required for android build)" OFF )
IF ( ANDROID_PREBUILD )
MESSAGE ( "Option ANDROID_PREBUILD is set, only rtabmap resource tool will be built. You can use android toolchain after that." )
ADD_SUBDIRECTORY ( utilite )
return ()
ENDIF ( ANDROID_PREBUILD )
2018-09-04 15:44:37 -04:00
IF ( APPLE OR WIN32 )
OPTION ( BUILD_AS_BUNDLE "Set to ON to build as bundle with all embedded dependencies (DragNDrop for Mac, installer for Windows)" OFF )
ENDIF ( APPLE OR WIN32 )
2016-01-21 17:11:57 -05:00
OPTION ( BUILD_APP "Build main application" ON )
OPTION ( BUILD_TOOLS "Build tools" ON )
OPTION ( BUILD_EXAMPLES "Build examples" ON )
2026-08-06 13:32:20 -07:00
# Off by default: it downloads the Doxygen theme at configure time, which an
# ordinary build has no reason to need. Set by docs-report.sh.
OPTION ( BUILD_DOCUMENTATION "Prepare the API documentation build (downloads the Doxygen theme)" OFF )
# The unit tests are host executables run by ctest, which can't be done from a
# cross-compiled Android/iOS build.
if ( ANDROID OR IOS OR CMAKE_SYSTEM_NAME STREQUAL "iOS" )
set ( BUILD_TESTING OFF CACHE BOOL "Build the testing tree." FORCE )
endif ()
2026-08-16 19:51:39 +03:00
# Performance tests are benchmarks: they report times, memory and recall
# instead of asserting on them, as those depend on the machine. They are built
# by default so they cannot rot, but are labelled "performance" so that a run
# opts in with `ctest -L performance` and CI opts out with `ctest -LE
# performance`. They can also be run directly, e.g. bin/test_flann_index_perf.
OPTION ( BUILD_PERF_TESTS "Build the performance tests (see ctest -L performance)" ON )
2026-08-06 13:32:20 -07:00
include ( CTest )
if ( BUILD_TESTING )
# Add GTest using FetchContent
include ( FetchContent )
FetchContent_Declare (
googletest
URL https://github.com/google/googletest/archive/refs/tags/v1.16.0.zip
)
FetchContent_GetProperties ( googletest )
if ( NOT googletest_POPULATED )
FetchContent_Populate ( googletest )
add_subdirectory ( ${ googletest_SOURCE_DIR } ${ googletest_BINARY_DIR } )
endif ()
include ( GoogleTest )
set ( TEST_DATA_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/data"
CACHE PATH "Root directory holding the test fixtures (data/tests/*.db)" )
endif ()
OPTION ( ENABLE_COVERAGE "Build with gcov/lcov coverage (GCC/Clang, Debug only; see coverage-report.sh)" OFF )
IF ( ENABLE_COVERAGE )
IF ( NOT CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang" )
MESSAGE ( FATAL_ERROR "ENABLE_COVERAGE requires GCC or Clang with gcov/lcov (current: ${CMAKE_CXX_COMPILER_ID})." )
ENDIF ()
IF ( NOT CMAKE_BUILD_TYPE STREQUAL "Debug" )
MESSAGE ( FATAL_ERROR "ENABLE_COVERAGE requires CMAKE_BUILD_TYPE=Debug (current: \" ${ CMAKE_BUILD_TYPE } \").")
ENDIF( )
MESSAGE ( STATUS "Coverage instrumentation enabled" )
ADD_COMPILE_OPTIONS ( --coverage -O0 -g )
ADD_LINK_OPTIONS ( --coverage )
ENDIF ()
# Check UDEBUG/UINFO/UWARN/UERROR/uFormat format strings against their
# arguments.
# -Wno-format-zero-length: UDEBUG("") is used deliberately as a trace point
# -Wformat-security: non-literal format strings, e.g. UERROR(uFormat(...).c_str())
OPTION ( ENABLE_FORMAT_ERRORS "Treat log/uFormat format-string mismatches as errors (GCC/Clang)" OFF )
IF ( CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang" )
ADD_COMPILE_OPTIONS ( -Wformat -Wformat-security -Wno-format-zero-length )
IF ( ENABLE_FORMAT_ERRORS )
MESSAGE ( STATUS "Format-string mismatches are errors" )
ADD_COMPILE_OPTIONS ( -Werror=format -Werror=format-security )
ENDIF ()
ELSEIF ( ENABLE_FORMAT_ERRORS )
MESSAGE ( WARNING "ENABLE_FORMAT_ERRORS has no effect on ${CMAKE_CXX_COMPILER_ID} (needs GCC/Clang)" )
ENDIF ()
2011-06-05 14:45:39 +00:00
####### DEPENDENCIES #######
2021-06-08 00:06:49 -04:00
IF ( MOBILE_BUILD )
2016-09-01 13:40:44 -04:00
option ( WITH_QT "Include Qt support" OFF )
ELSE ()
2015-08-13 15:12:43 -04:00
option ( WITH_QT "Include Qt support" ON )
2016-09-01 13:40:44 -04:00
ENDIF ()
2019-04-18 19:50:58 -04:00
option ( WITH_ORB_OCTREE "Include ORB Octree feature support" ON )
2021-01-17 01:56:27 -05:00
option ( WITH_TORCH "Include Torch support (SuperPoint)" OFF )
option ( WITH_PYTHON "Include Python3 support (PyMatcher, PyDetector)" OFF )
option ( WITH_PYTHON_THREADING "Use more than one Python interpreter." OFF )
2021-01-14 15:49:18 -05:00
option ( WITH_PDAL "Include PDAL support" ON )
2024-10-06 17:16:22 -07:00
option ( WITH_LIBLAS "Include libLAS support" OFF )
2024-09-13 14:22:54 -07:00
option ( WITH_CUDASIFT "Include CudaSift support (this fork https://github.com/matlabbe/CudaSift)" OFF )
2015-08-13 15:12:43 -04:00
option ( WITH_FREENECT "Include Freenect support" ON )
option ( WITH_FREENECT2 "Include Freenect2 support" ON )
2017-11-06 00:19:12 -05:00
option ( WITH_K4W2 "Include Kinect for Windows v2 support" ON )
2019-07-09 20:48:09 -04:00
option ( WITH_K4A "Include Kinect for Azure support" ON )
2024-06-15 23:12:07 +02:00
option ( WITH_OPENNI "Include OpenNI support" ON )
2015-08-13 15:12:43 -04:00
option ( WITH_OPENNI2 "Include OpenNI2 support" ON )
option ( WITH_DC1394 "Include dc1394 support" ON )
option ( WITH_G2O "Include g2o support" ON )
2015-09-02 17:51:43 -04:00
option ( WITH_GTSAM "Include GTSAM support" ON )
2016-03-01 14:25:00 -05:00
option ( WITH_TORO "Include TORO support" ON )
2021-11-08 13:47:27 -05:00
option ( WITH_CERES "Include Ceres support" OFF )
2023-02-03 17:25:38 -08:00
option ( WITH_MRPT "Include MRPT support" ON )
2016-03-01 14:25:00 -05:00
option ( WITH_VERTIGO "Include Vertigo support" ON )
2021-11-08 13:47:27 -05:00
option ( WITH_CVSBA "Include cvsba support" OFF )
2017-08-22 16:20:49 -04:00
option ( WITH_POINTMATCHER "Include libpointmatcher support" ON )
2021-11-08 13:47:27 -05:00
option ( WITH_CCCORELIB "Include CCCoreLib support" OFF )
2021-11-13 19:45:57 -05:00
option ( WITH_OPEN3D "Include Open3D support" OFF )
2021-11-08 13:47:27 -05:00
option ( WITH_LOAM "Include LOAM support" OFF )
2021-09-27 20:20:11 -04:00
option ( WITH_FLOAM "Include FLOAM support" OFF )
2026-04-12 20:06:44 -05:00
option ( WITH_LIOSAM "Include LIO-SAM support" OFF )
2015-08-13 15:12:43 -04:00
option ( WITH_FLYCAPTURE2 "Include FlyCapture2/Triclops support" ON )
2016-05-31 19:09:49 -04:00
option ( WITH_ZED "Include ZED sdk support" ON )
2021-02-28 10:31:18 -05:00
option ( WITH_ZEDOC "Include ZED Open Capture support" ON )
2016-07-26 18:39:34 -04:00
option ( WITH_REALSENSE "Include RealSense support" ON )
2017-05-05 16:10:09 -04:00
option ( WITH_REALSENSE_SLAM "Include RealSenseSlam support" ON )
2025-10-12 10:35:30 -07:00
option ( WITH_REALSENSE2 "Include RealSense2 support" ON )
2020-04-30 00:57:47 -04:00
option ( WITH_MYNTEYE "Include mynteye-s support" ON )
2026-07-01 18:11:28 -07:00
option ( WITH_DEPTHAI "Include depthai-core v2 support" OFF )
2024-05-23 17:02:38 +08:00
option ( WITH_XVSDK "Include XVisio SDK support" OFF )
2025-10-07 10:22:16 -07:00
option ( WITH_ORBBEC_SDK "Include Orbbec SDK v2 support" OFF )
2023-12-17 22:44:11 -08:00
option ( WITH_OCTOMAP "Include OctoMap support" ON )
2025-03-01 19:46:03 -08:00
option ( WITH_GRIDMAP "Include GridMap support" OFF )
2021-11-08 13:47:27 -05:00
option ( WITH_CPUTSDF "Include CPUTSDF support" OFF )
option ( WITH_OPENCHISEL "Include open_chisel support" OFF )
2020-01-06 13:39:35 -05:00
option ( WITH_ALICE_VISION "Include AliceVision support" OFF )
2023-12-19 19:39:50 -08:00
option ( WITH_FOVIS "Include FOVIS supp++ort" OFF )
2021-11-08 13:47:27 -05:00
option ( WITH_VISO2 "Include VISO2 support" OFF )
option ( WITH_DVO "Include DVO support" OFF )
option ( WITH_ORB_SLAM "Include ORB_SLAM2 or ORB_SLAM3 support" OFF )
option ( WITH_OKVIS "Include OKVIS support" OFF )
option ( WITH_MSCKF_VIO "Include MSCKF_VIO support" OFF )
2025-09-14 19:29:28 -07:00
option ( WITH_VINS_FUSION "Include VINS-Fusion support" OFF )
2021-11-08 13:47:27 -05:00
option ( WITH_OPENVINS "Include OpenVINS support" OFF )
2025-10-03 11:49:21 -07:00
option ( WITH_CUVSLAM "Include cuVSLAM support" OFF )
2019-05-07 18:57:53 -04:00
option ( WITH_MADGWICK "Include Madgwick IMU filtering support" ON )
2019-08-14 12:09:56 -04:00
option ( WITH_FASTCV "Include FastCV support" ON )
2021-09-24 17:31:16 -04:00
option ( WITH_OPENMP "Include OpenMP support" ON )
2023-04-30 14:33:58 -07:00
option ( WITH_OPENGV "Include OpenGV support" ON )
2026-03-15 14:57:27 -07:00
option ( BUILD_OPENGV "Build OpenGV internally instead of using the system one" OFF )
2026-05-26 17:43:34 -07:00
option ( WITH_APRILTAG "Include AprilTag support" OFF )
2021-06-08 00:06:49 -04:00
IF ( MOBILE_BUILD )
2020-04-22 15:05:07 -04:00
option ( PCL_OMP "With PCL OMP implementations" OFF )
ELSE ()
2016-07-17 21:04:11 -04:00
option ( PCL_OMP "With PCL OMP implementations" ON )
2020-04-22 15:05:07 -04:00
ENDIF ()
2024-08-25 20:48:27 -07:00
option ( BUILD_WITH_RPATH_NOT_RUNPATH "Explicitly disable usage of RUNPATH for the build tree on linux systems by adding --disable-new-dtags to linker (using old RPATH behavior instead)" OFF )
2015-08-13 15:12:43 -04:00
2019-07-31 10:37:59 -04:00
set ( RTABMAP_QT_VERSION AUTO CACHE STRING "Force a specific Qt version." )
2023-03-05 16:34:56 -08:00
set_property ( CACHE RTABMAP_QT_VERSION PROPERTY STRINGS AUTO 4 5 6 )
2019-07-31 10:37:59 -04:00
2026-07-29 22:48:39 -07:00
# OpenCV components. calib3d was split into "calib" + "geometry" in OpenCV 5.
# These lists are reused below to generate RTABMapConfig.cmake so downstream
# find_package(RTABMap) requests the same components this build used.
SET ( RTABMAP_OpenCV_COMPONENTS_5 core imgproc highgui stitching photo video videoio calib geometry )
SET ( RTABMAP_OpenCV_COMPONENTS_4 core imgproc highgui stitching photo video videoio calib3d )
SET ( RTABMAP_OpenCV_OPTIONAL_COMPONENTS_5 objdetect xfeatures2d nonfree gpu cudafeatures2d cudaoptflow cudaimgproc )
SET ( RTABMAP_OpenCV_OPTIONAL_COMPONENTS_4 aruco objdetect xfeatures2d nonfree gpu cudafeatures2d cudaoptflow cudaimgproc )
# Probe OpenCV without a version constraint first, then request the components
# matching the detected major version. A version-constrained find that fails to
# match (e.g. asking for 5 when only 4 is present) resets OpenCV_DIR to NOTFOUND,
# which breaks toolchain builds that rely on a -DOpenCV_DIR hint (e.g. Android,
# where CMAKE_FIND_ROOT_PATH restricts the search).
FIND_PACKAGE ( OpenCV REQUIRED QUIET COMPONENTS core )
IF ( OpenCV_VERSION_MAJOR GREATER 4 )
FIND_PACKAGE ( OpenCV REQUIRED QUIET COMPONENTS ${ RTABMAP_OpenCV_COMPONENTS_5 } OPTIONAL_COMPONENTS ${ RTABMAP_OpenCV_OPTIONAL_COMPONENTS_5 } )
ELSE ()
FIND_PACKAGE ( OpenCV REQUIRED QUIET COMPONENTS ${ RTABMAP_OpenCV_COMPONENTS_4 } OPTIONAL_COMPONENTS ${ RTABMAP_OpenCV_OPTIONAL_COMPONENTS_4 } )
ENDIF ()
2018-03-26 18:06:41 -04:00
2017-10-24 10:05:39 +02:00
IF ( WITH_QT )
FIND_PACKAGE ( PCL 1.7 REQUIRED QUIET COMPONENTS common io kdtree search surface filters registration sample_consensus segmentation visualization )
ELSE ()
FIND_PACKAGE ( PCL 1.7 REQUIRED QUIET COMPONENTS common io kdtree search surface filters registration sample_consensus segmentation )
ENDIF ()
2018-12-01 22:40:02 -05:00
if ( PCL_COMPILE_OPTIONS )
if ( "${PCL_COMPILE_OPTIONS}" MATCHES "-march=native" )
MESSAGE ( WARNING "PCL compile options contain \" -march=native\ ", make sure all libraries using Eigen are also compiled with that flag to avoid some segmentation faults (with gdb referring to some Eigen functions)." )
else ()
MESSAGE ( STATUS "PCL compile options don't contain \" -march=native\ ", make sure all libraries using Eigen are also compiled without that flag to avoid some segmentation faults (with gdb referring to some Eigen functions)." )
endif ()
2018-03-26 18:06:41 -04:00
else ()
2018-12-01 22:40:02 -05:00
if ( "${PCL_DEFINITIONS}" MATCHES "-march=native" )
MESSAGE ( WARNING "PCL definitions contain \" -march=native\ ", make sure all libraries using Eigen are also compiled with that flag to avoid some segmentation faults (with gdb referring to some Eigen functions)." )
else ()
MESSAGE ( STATUS "PCL definitions don't contain \" -march=native\ ", make sure all libraries using Eigen are also compiled without that flag to avoid some segmentation faults (with gdb referring to some Eigen functions)." )
endif ()
2018-03-26 18:06:41 -04:00
endif ()
2015-10-02 11:23:15 -04:00
FIND_PACKAGE ( ZLIB REQUIRED QUIET )
2016-01-21 17:11:57 -05:00
2024-03-23 14:32:18 -07:00
FIND_PACKAGE ( SQLite3 QUIET )
IF ( SQLite3_FOUND )
MESSAGE ( STATUS "Found SQLite3: ${SQLite3_INCLUDE_DIRS} ${SQLite3_LIBRARIES}" )
ENDIF ( SQLite3_FOUND )
2018-09-05 14:22:34 -04:00
2016-05-04 16:45:19 -04:00
if ( NOT "${PCL_LIBRARIES}" STREQUAL "" )
2017-08-03 16:40:12 -04:00
# fix libproj.so not found on Xenial
2016-05-04 16:45:19 -04:00
list ( REMOVE_ITEM PCL_LIBRARIES "vtkproj4" )
endif ()
2016-01-21 17:11:57 -05:00
# OpenMP ("-fopenmp" should be added for flann included in PCL)
# the gcc-4.2.1 coming with MacOS X is not compatible with the OpenMP pragmas we use, so disabling OpenMP for it
2021-09-24 17:31:16 -04:00
if ((( NOT APPLE ) OR ( NOT CMAKE_COMPILER_IS_GNUCXX ) OR ( GCC_VERSION VERSION_GREATER 4.2.1 ) OR ( CMAKE_CXX_COMPILER_ID STREQUAL "Clang" )) AND WITH_OPENMP )
2021-06-08 00:06:49 -04:00
find_package ( OpenMP COMPONENTS C CXX )
2016-01-21 17:11:57 -05:00
endif ()
if ( OPENMP_FOUND )
set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}" )
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}" )
2018-10-11 15:19:20 -04:00
set ( CMAKE_INSTALL_OPENMP_LIBRARIES TRUE )
2021-06-08 00:06:49 -04:00
message ( STATUS "Found OpenMP: ${OpenMP_CXX_LIBRARIES}" )
2016-07-17 21:04:11 -04:00
if ( PCL_OMP )
2021-09-24 17:31:16 -04:00
message ( STATUS "Add PCL_OMP to definitions" )
2016-07-17 21:04:11 -04:00
add_definitions ( -DPCL_OMP )
endif ( PCL_OMP )
2021-09-24 17:31:16 -04:00
elseif ( WITH_OPENMP )
2016-01-21 17:11:57 -05:00
message ( STATUS "Not found OpenMP" )
endif ()
2015-10-02 11:23:15 -04:00
IF ( OpenCV_FOUND )
MESSAGE ( STATUS "Found OpenCV: ${OpenCV_INCLUDE_DIRS}" )
ENDIF ( OpenCV_FOUND )
IF ( PCL_FOUND )
MESSAGE ( STATUS "Found PCL: ${PCL_INCLUDE_DIRS}" )
ENDIF ( PCL_FOUND )
IF ( ZLIB_FOUND )
MESSAGE ( STATUS "Found ZLIB: ${ZLIB_INCLUDE_DIRS}" )
ENDIF ( ZLIB_FOUND )
2012-06-24 17:19:34 +00:00
2016-09-27 15:43:23 -04:00
SET ( ADD_VTK_GUI_SUPPORT_QT_TO_CONF FALSE )
2015-08-13 15:12:43 -04:00
IF ( WITH_QT )
2016-05-09 11:17:51 -04:00
FIND_PACKAGE ( VTK )
IF ( NOT VTK_FOUND )
2024-02-03 17:02:42 -08:00
MESSAGE ( FATAL_ERROR "VTK is required when using Qt. Set -DWITH_QT=OFF if you don't want gui tools." )
2016-05-09 11:17:51 -04:00
ENDIF ( NOT VTK_FOUND )
2016-05-04 16:45:19 -04:00
# If Qt is here, the GUI will be built
2023-03-05 17:46:01 -08:00
IF ( NOT( ${ VTK_MAJOR_VERSION } LESS 9 ) )
2024-02-03 17:02:42 -08:00
IF ( NOT VTK_QT_VERSION )
MESSAGE ( FATAL_ERROR "WITH_QT option is ON, but VTK ${VTK_MAJOR_VERSION} has not been built with Qt support, disabling Qt." )
ENDIF ()
option ( VTK_GLOBAL_WARNING_DISPLAY "Show VTK warning display on runtime" OFF )
IF ( NOT VTK_GLOBAL_WARNING_DISPLAY )
ADD_DEFINITIONS ( -DVTK_GLOBAL_WARNING_DISPLAY_OFF )
ENDIF ()
2023-03-05 16:34:56 -08:00
MESSAGE ( STATUS "VTK>=9 detected, will use VTK_QT_VERSION=${VTK_QT_VERSION} for Qt version." )
IF ( ${ VTK_QT_VERSION } EQUAL 6 )
FIND_PACKAGE ( Qt6 COMPONENTS Widgets Core Gui OpenGL PrintSupport QUIET OPTIONAL_COMPONENTS Svg )
ELSEIF ( ${ VTK_QT_VERSION } EQUAL 5 )
FIND_PACKAGE ( Qt5 COMPONENTS Widgets Core Gui OpenGL PrintSupport QUIET OPTIONAL_COMPONENTS Svg )
ELSE ()
FIND_PACKAGE ( Qt4 COMPONENTS QtCore QtGui OPTIONAL_COMPONENTS QtSvg )
ENDIF ()
ELSE ()
# look for Qt5 (if vtk>5 is installed) before Qt4
IF ( "${VTK_MAJOR_VERSION}" GREATER 5 )
IF ( RTABMAP_QT_VERSION STREQUAL "AUTO" OR RTABMAP_QT_VERSION STREQUAL "5" )
FIND_PACKAGE ( Qt5 COMPONENTS Widgets Core Gui OpenGL PrintSupport QUIET OPTIONAL_COMPONENTS Svg )
2023-03-22 20:42:33 -07:00
ENDIF ( RTABMAP_QT_VERSION STREQUAL "AUTO" OR RTABMAP_QT_VERSION STREQUAL "5" )
ENDIF ( "${VTK_MAJOR_VERSION}" GREATER 5 )
2016-05-09 11:17:51 -04:00
2023-03-05 16:34:56 -08:00
IF ( NOT Qt5_FOUND )
2019-07-31 10:37:59 -04:00
IF ( RTABMAP_QT_VERSION STREQUAL "AUTO" OR RTABMAP_QT_VERSION STREQUAL "4" )
2023-03-05 16:34:56 -08:00
FIND_PACKAGE ( Qt4 COMPONENTS QtCore QtGui OPTIONAL_COMPONENTS QtSvg )
2019-07-31 10:37:59 -04:00
ENDIF ( RTABMAP_QT_VERSION STREQUAL "AUTO" OR RTABMAP_QT_VERSION STREQUAL "4" )
2023-03-05 16:34:56 -08:00
ENDIF ( NOT Qt5_FOUND )
ENDIF ()
2016-05-04 16:45:19 -04:00
2023-03-05 16:34:56 -08:00
IF ( QT4_FOUND OR Qt5_FOUND OR Qt6_FOUND )
2023-11-19 19:40:20 -08:00
# For VCPKG build, set those global variables to off,
# we will enable them for jsut specific targets
set ( CMAKE_AUTOMOC OFF )
set ( CMAKE_AUTORCC OFF )
set ( CMAKE_AUTOUIC OFF )
2015-08-13 15:12:43 -04:00
IF ( "${VTK_MAJOR_VERSION}" EQUAL 5 )
FIND_PACKAGE ( QVTK REQUIRED ) # only for VTK 5
2016-09-27 15:43:23 -04:00
ELSE ()
2023-03-22 20:42:33 -07:00
list ( FIND PCL_LIBRARIES VTK::GUISupportQt value )
IF ( value EQUAL -1 )
2021-05-15 19:43:47 -04:00
list ( FIND PCL_LIBRARIES vtkGUISupportQt value )
IF ( value EQUAL -1 )
2023-03-05 17:46:01 -08:00
IF ( NOT( ${ VTK_MAJOR_VERSION } LESS 9 ) )
2023-01-14 20:12:33 -08:00
SET ( PCL_LIBRARIES "${PCL_LIBRARIES};VTK::GUISupportQt" )
ELSE ()
SET ( PCL_LIBRARIES "${PCL_LIBRARIES};vtkGUISupportQt" )
ENDIF ()
2021-05-15 19:43:47 -04:00
SET ( ADD_VTK_GUI_SUPPORT_QT_TO_CONF TRUE )
ENDIF ( value EQUAL -1 )
2023-03-22 20:42:33 -07:00
ENDIF ( value EQUAL -1 )
2020-04-03 17:28:23 -04:00
MESSAGE ( STATUS "VTK_RENDERING_BACKEND=${VTK_RENDERING_BACKEND}" )
2019-11-21 04:07:38 +00:00
IF ( VTK_RENDERING_BACKEND STREQUAL "OpenGL2" )
ADD_DEFINITIONS ( "-DVTK_OPENGL2" )
2020-04-03 17:28:23 -04:00
# see issue #525
list ( FIND PCL_LIBRARIES vtkRenderingVolumeOpenGL2 value )
IF ( value EQUAL -1 )
SET ( PCL_LIBRARIES "${PCL_LIBRARIES};vtkRenderingVolumeOpenGL2" )
ENDIF ( value EQUAL -1 )
2019-11-21 04:07:38 +00:00
ELSEIF ( VTK_RENDERING_BACKEND STREQUAL "OpenGL" )
2020-04-03 17:28:23 -04:00
# PCL 1.9 not adding vtkRenderingVolumeOpenGL as dependency anymore, so add it for us
list ( FIND PCL_LIBRARIES vtkRenderingVolumeOpenGL value )
IF ( value EQUAL -1 )
2019-11-21 04:07:38 +00:00
SET ( PCL_LIBRARIES "${PCL_LIBRARIES};vtkRenderingVolumeOpenGL" )
2020-04-03 17:28:23 -04:00
ENDIF ( value EQUAL -1 )
2021-05-15 19:43:47 -04:00
ELSEIF ( "${VTK_MAJOR_VERSION}" EQUAL 9 )
list ( FIND PCL_LIBRARIES VTK::RenderingOpenGL2 value )
2023-03-22 20:42:33 -07:00
IF ( NOT value EQUAL -1 )
list ( FIND PCL_LIBRARIES VTK::RenderingVolumeOpenGL2 value )
2021-05-15 19:43:47 -04:00
IF ( value EQUAL -1 )
SET ( PCL_LIBRARIES "${PCL_LIBRARIES};VTK::RenderingVolumeOpenGL2" )
ENDIF ( value EQUAL -1 )
2023-03-22 20:42:33 -07:00
ENDIF ( NOT value EQUAL -1 )
2019-11-21 04:07:38 +00:00
ENDIF ()
2020-04-03 17:28:23 -04:00
2016-09-27 15:43:23 -04:00
ENDIF ()
2018-06-15 12:17:11 -04:00
ADD_DEFINITIONS ( -DQT_NO_KEYWORDS ) # To avoid conflicts with boost signals/foreach and Qt macros
2023-03-05 16:34:56 -08:00
ENDIF ( QT4_FOUND OR Qt5_FOUND OR Qt6_FOUND )
2015-08-13 15:12:43 -04:00
ENDIF ( WITH_QT )
2022-05-30 07:24:04 -04:00
IF ( NOT VTK_FOUND )
# Newest PCL versions won't set -DDISABLE_VTK
IF ( NOT "${PCL_DEFINITIONS}" MATCHES "-DDISABLE_VTK" )
SET ( PCL_DEFINITIONS "${PCL_DEFINITIONS};-DDISABLE_VTK" )
ENDIF ()
ENDIF ( NOT VTK_FOUND )
2021-01-17 01:56:27 -05:00
IF ( WITH_TORCH )
2025-10-12 10:35:30 -07:00
FIND_PACKAGE ( Torch )
2020-04-16 17:59:45 -04:00
IF ( TORCH_FOUND )
MESSAGE ( STATUS "Found Torch: ${TORCH_INCLUDE_DIRS}" )
ENDIF ( TORCH_FOUND )
2021-01-17 01:56:27 -05:00
ENDIF ( WITH_TORCH )
2020-05-09 21:13:41 -04:00
2021-01-17 01:56:27 -05:00
IF ( WITH_PYTHON )
2022-02-15 01:28:38 -05:00
FIND_PACKAGE ( Python3 COMPONENTS Interpreter Development NumPy )
2020-05-09 21:13:41 -04:00
IF ( Python3_FOUND )
MESSAGE ( STATUS "Found Python3" )
2023-09-17 01:19:59 -07:00
FIND_PACKAGE ( pybind11 REQUIRED )
2020-05-09 21:13:41 -04:00
ENDIF ( Python3_FOUND )
2021-01-17 01:56:27 -05:00
ENDIF ( WITH_PYTHON )
2020-04-16 17:59:45 -04:00
2021-01-14 15:49:18 -05:00
IF ( WITH_PDAL )
FIND_PACKAGE ( PDAL QUIET )
IF ( PDAL_FOUND )
MESSAGE ( STATUS "Found PDAL ${PDAL_VERSION}: ${PDAL_INCLUDE_DIRS}" )
ENDIF ( PDAL_FOUND )
ENDIF ( WITH_PDAL )
2024-10-06 17:16:22 -07:00
IF ( WITH_LIBLAS )
2025-10-12 10:35:30 -07:00
FIND_PACKAGE ( libLAS )
2024-10-06 17:16:22 -07:00
IF ( libLAS_FOUND )
MESSAGE ( STATUS "Found libLAS ${libLAS_VERSION}: ${libLAS_INCLUDE_DIRS}" )
ENDIF ( libLAS_FOUND )
ENDIF ( WITH_LIBLAS )
2024-09-13 14:22:54 -07:00
IF ( WITH_CUDASIFT )
2025-10-12 10:35:30 -07:00
FIND_PACKAGE ( CudaSift 3 )
2024-09-13 14:22:54 -07:00
IF ( CudaSift_FOUND )
MESSAGE ( STATUS "Found CudaSift" )
ENDIF ( CudaSift_FOUND )
ENDIF ( WITH_CUDASIFT )
2015-08-13 15:12:43 -04:00
IF ( WITH_FREENECT )
2015-10-02 11:23:15 -04:00
FIND_PACKAGE ( Freenect QUIET )
IF ( Freenect_FOUND )
MESSAGE ( STATUS "Found Freenect: ${Freenect_INCLUDE_DIRS}" )
ENDIF ( Freenect_FOUND )
2015-08-13 15:12:43 -04:00
ENDIF ( WITH_FREENECT )
IF ( WITH_FREENECT2 )
FIND_PACKAGE ( freenect2 QUIET )
2015-10-02 11:23:15 -04:00
IF ( freenect2_FOUND )
2017-05-17 16:59:35 -04:00
IF ( NOT freenect2_INCLUDE_DIRS )
SET ( freenect2_INCLUDE_DIRS ${ freenect2_INCLUDE_DIR } )
ENDIF ( NOT freenect2_INCLUDE_DIRS )
2015-10-02 11:23:15 -04:00
MESSAGE ( STATUS "Found freenect2: ${freenect2_INCLUDE_DIRS}" )
2016-10-31 14:28:17 -04:00
# Explicitly link to OpenCL (in case of CUDA installed)
2017-05-17 16:59:35 -04:00
FIND_PACKAGE ( OpenCL QUIET )
IF ( OpenCL_FOUND )
SET ( freenect2_LIBRARIES
${ OpenCL_LIBRARIES }
${ freenect2_LIBRARIES }
)
ENDIF ( OpenCL_FOUND )
2015-10-02 11:23:15 -04:00
ENDIF ( freenect2_FOUND )
2015-08-13 15:12:43 -04:00
ENDIF ( WITH_FREENECT2 )
2018-05-02 12:46:45 -04:00
IF ( WITH_K4W2 AND WIN32 )
2017-11-06 00:19:12 -05:00
FIND_PACKAGE ( KinectSDK2 QUIET )
2023-03-22 20:42:33 -07:00
IF ( KinectSDK2_FOUND )
2017-11-06 00:19:12 -05:00
MESSAGE ( STATUS "Found Kinect for Windows 2: ${KinectSDK2_INCLUDE_DIRS}" )
ENDIF ( KinectSDK2_FOUND )
2018-05-02 12:46:45 -04:00
ENDIF ( WITH_K4W2 AND WIN32 )
2017-11-06 00:19:12 -05:00
2019-07-09 20:48:09 -04:00
IF ( WITH_K4A )
2019-07-10 12:34:13 -04:00
IF ( WIN32 )
FIND_PACKAGE ( K4A QUIET )
ELSE ()
FIND_PACKAGE ( k4a QUIET )
FIND_PACKAGE ( k4arecord QUIET )
IF ( NOT ( k4a_FOUND AND k4arecord_FOUND ))
SET ( k4a_FOUND FALSE )
ENDIF ( NOT ( k4a_FOUND AND k4arecord_FOUND ))
ENDIF ()
2023-03-22 20:42:33 -07:00
IF ( k4a_FOUND )
2019-07-10 12:34:13 -04:00
MESSAGE ( STATUS "Found Kinect for Azure: ${k4a_INCLUDE_DIRS}" )
ENDIF ( k4a_FOUND )
2019-07-09 20:48:09 -04:00
ENDIF ( WITH_K4A )
2016-04-10 14:52:14 -04:00
# IF PCL depends on OpenNI2 (already found), ignore WITH_OPENNI2
IF ( WITH_OPENNI2 OR OpenNI2_FOUND )
2015-10-02 11:23:15 -04:00
FIND_PACKAGE ( OpenNI2 QUIET )
IF ( OpenNI2_FOUND )
MESSAGE ( STATUS "Found OpenNI2: ${OpenNI2_INCLUDE_DIRS}" )
ENDIF ( OpenNI2_FOUND )
2016-04-10 14:52:14 -04:00
ENDIF ( WITH_OPENNI2 OR OpenNI2_FOUND )
2015-08-13 15:12:43 -04:00
IF ( WITH_DC1394 )
2015-10-02 11:23:15 -04:00
FIND_PACKAGE ( DC1394 QUIET )
IF ( DC1394_FOUND )
MESSAGE ( STATUS "Found DC1394: ${DC1394_INCLUDE_DIRS}" )
ENDIF ( DC1394_FOUND )
2015-08-13 15:12:43 -04:00
ENDIF ( WITH_DC1394 )
IF ( WITH_G2O )
2023-03-13 03:10:16 -07:00
FIND_PACKAGE ( g2o NO_MODULE )
2021-05-15 19:43:47 -04:00
IF ( g2o_FOUND )
2025-10-13 22:54:35 -07:00
MESSAGE ( STATUS "Found g2o (targets)" )
SET ( G2O_FOUND ${ g2o_FOUND } )
get_target_property ( G2O_INCLUDES g2o::core INTERFACE_INCLUDE_DIRECTORIES )
MESSAGE ( STATUS "g2o include dir: ${G2O_INCLUDES}" )
FIND_FILE ( G2O_FACTORY_FILE g2o/core/factory.h
2025-06-30 21:32:27 -07:00
PATHS ${ G2O_INCLUDES }
NO_DEFAULT_PATH )
2025-10-13 22:54:35 -07:00
FILE ( READ ${ G2O_FACTORY_FILE } TMPTXT )
STRING ( FIND "${TMPTXT}" "shared_ptr" matchres )
IF ( ${ matchres } EQUAL -1 )
2025-06-30 21:32:27 -07:00
MESSAGE ( STATUS "Old g2o factory version detected without shared ptr (factory file: ${G2O_FACTORY_FILE})." )
SET ( G2O_CPP11 2 )
2025-10-13 22:54:35 -07:00
ELSE ()
2025-06-30 21:32:27 -07:00
MESSAGE ( STATUS "Latest g2o factory version detected with shared ptr (factory file: ${G2O_FACTORY_FILE})." )
SET ( G2O_CPP11 1 )
2025-10-13 22:54:35 -07:00
ENDIF ()
FIND_FILE ( G2O_SBA_UTILS_FILE g2o/types/sba/sba_utils.h
PATHS ${ G2O_INCLUDES }
NO_DEFAULT_PATH )
IF ( G2O_SBA_UTILS_FILE )
SET ( G2O_WITH_SBA_UTILS 1 )
ELSE ()
SET ( G2O_WITH_SBA_UTILS 0 )
ENDIF ()
2021-03-02 18:17:09 +00:00
ELSE ()
2022-01-03 16:05:11 -05:00
FIND_PACKAGE ( G2O QUIET )
IF ( G2O_FOUND )
MESSAGE ( STATUS "Found g2o: ${G2O_INCLUDE_DIRS}" )
ENDIF ( G2O_FOUND )
2021-03-02 18:17:09 +00:00
ENDIF ()
2015-08-13 15:12:43 -04:00
ENDIF ( WITH_G2O )
2015-09-02 17:51:43 -04:00
IF ( WITH_GTSAM )
2018-10-11 14:28:41 -04:00
# Force config mode to ignore PCL's findGTSAM.cmake file
FIND_PACKAGE ( GTSAM CONFIG QUIET )
2025-12-20 14:48:09 -08:00
IF ( GTSAM_FOUND )
# For issue https://github.com/introlab/rtabmap/pull/1626
FIND_FILE ( GTSAM_NOISE_MODEL_FACTOR_N_FILE gtsam/nonlinear/NoiseModelFactorN.h
PATHS ${ GTSAM_INCLUDE_DIR }
NO_DEFAULT_PATH )
IF ( GTSAM_NOISE_MODEL_FACTOR_N_FILE )
MESSAGE ( STATUS "GTSAM with NoiseModelFactorN.h" )
ADD_DEFINITIONS ( "-DGTSAM_WITH_NOISE_MODEL_FACTOR_N" )
ENDIF ( GTSAM_NOISE_MODEL_FACTOR_N_FILE )
ENDIF ( GTSAM_FOUND )
2015-09-02 17:51:43 -04:00
ENDIF ( WITH_GTSAM )
2023-02-03 17:25:38 -08:00
IF ( WITH_MRPT )
FIND_PACKAGE ( MRPT COMPONENTS poses QUIET )
IF ( MRPT_FOUND )
message ( STATUS "MRPT_VERSION: ${MRPT_VERSION}" )
message ( STATUS "MRPT_LIBRARIES: ${MRPT_LIBRARIES}" )
ENDIF ( MRPT_FOUND )
ENDIF ( WITH_MRPT )
2015-08-13 15:12:43 -04:00
IF ( WITH_FLYCAPTURE2 )
2015-10-02 11:23:15 -04:00
FIND_PACKAGE ( FlyCapture2 QUIET )
IF ( FlyCapture2_FOUND )
MESSAGE ( STATUS "Found FlyCapture2: ${FlyCapture2_INCLUDE_DIRS}" )
ENDIF ( FlyCapture2_FOUND )
2015-08-13 15:12:43 -04:00
ENDIF ( WITH_FLYCAPTURE2 )
2012-06-24 17:19:34 +00:00
2015-08-15 12:58:29 -04:00
IF ( WITH_CVSBA )
2025-10-12 10:35:30 -07:00
FIND_PACKAGE ( cvsba )
2015-10-02 11:23:15 -04:00
IF ( cvsba_FOUND )
MESSAGE ( STATUS "Found cvsba: ${cvsba_INCLUDE_DIRS}" )
ENDIF ( cvsba_FOUND )
2015-08-15 12:58:29 -04:00
ENDIF ( WITH_CVSBA )
2012-06-24 17:19:34 +00:00
2017-08-22 16:20:49 -04:00
IF ( WITH_POINTMATCHER )
find_package ( libpointmatcher QUIET )
IF ( libpointmatcher_FOUND )
2023-09-05 08:51:57 -07:00
MESSAGE ( STATUS "Found libpointmatcher: ${libpointmatcher_INCLUDE_DIRS}" )
string ( FIND "${libpointmatcher_LIBRARIES}" "libnabo" value )
IF ( value EQUAL -1 )
# Find libnabo (Issue #1117):
find_package ( libnabo REQUIRED PATHS ${ LIBNABO_INSTALL_DIR } )
message ( STATUS "libnabo found, version ${libnabo_VERSION} (Config mode)" )
SET ( libpointmatcher_LIBRARIES "${libpointmatcher_LIBRARIES};libnabo::nabo" )
ENDIF ( value EQUAL -1 )
2024-04-27 14:58:33 -07:00
string ( FIND "${libpointmatcher_LIBRARIES}" "yaml-cpp::yaml-cpp" value )
IF ( NOT value EQUAL -1 )
# Find yaml-cpp (Issue #1268):
find_package ( yaml-cpp QUIET )
ENDIF ( NOT value EQUAL -1 )
2017-08-22 16:20:49 -04:00
ENDIF ( libpointmatcher_FOUND )
ENDIF ( WITH_POINTMATCHER )
2020-12-18 17:01:11 -05:00
IF ( libpointmatcher_FOUND OR GTSAM_FOUND )
2025-10-12 13:30:16 -07:00
find_package ( Boost COMPONENTS thread filesystem program_options date_time REQUIRED )
IF ( Boost_MINOR_VERSION GREATER 80 )
find_package ( Boost COMPONENTS thread filesystem program_options date_time chrono timer serialization REQUIRED )
ELSEIF ( Boost_MINOR_VERSION GREATER 47 )
2022-01-07 19:11:12 +01:00
find_package ( Boost COMPONENTS thread filesystem system program_options date_time chrono timer serialization REQUIRED )
2025-10-12 13:30:16 -07:00
ELSE ()
find_package ( Boost COMPONENTS thread filesystem system program_options date_time REQUIRED )
ENDIF ()
2021-01-17 15:06:47 -05:00
IF ( WIN32 )
2023-03-22 20:42:33 -07:00
MESSAGE ( STATUS "Boost_LIBRARY_DIRS=${Boost_LIBRARY_DIRS}" )
link_directories ( ${ Boost_LIBRARY_DIRS } )
2021-01-17 15:06:47 -05:00
ENDIF ( WIN32 )
2020-12-18 17:01:11 -05:00
ENDIF ( libpointmatcher_FOUND OR GTSAM_FOUND )
2021-03-27 15:11:20 -04:00
IF ( WITH_CCCORELIB )
2025-10-12 10:35:30 -07:00
find_package ( CCCoreLib )
2021-03-27 15:11:20 -04:00
IF ( CCCoreLib_FOUND )
MESSAGE ( STATUS "Found CCCoreLib: ${CCCoreLib_INCLUDE_DIRS}" )
ENDIF ( CCCoreLib_FOUND )
ENDIF ( WITH_CCCORELIB )
2021-11-13 19:45:57 -05:00
IF ( WITH_OPEN3D )
IF ( ${ CMAKE_VERSION } VERSION_LESS "3.19.0" )
MESSAGE ( WARNING "Open3D requires CMake version >=3.19 (current is ${CMAKE_VERSION})" )
ELSE ()
# Build Open3D like this to avoid linker errors in rtabmap:
# cmake -DBUILD_SHARED_LIBS=ON -DGLIBCXX_USE_CXX11_ABI=ON -DCMAKE_BUILD_TYPE=Release ..
2025-10-12 10:35:30 -07:00
find_package ( Open3D )
2021-11-13 19:45:57 -05:00
IF ( Open3D_FOUND )
MESSAGE ( STATUS "Found Open3D: ${Open3DINCLUDE_DIRS}" )
ENDIF ( Open3D_FOUND )
ENDIF ()
ENDIF ( WITH_OPEN3D )
2018-06-28 11:10:46 -04:00
IF ( WITH_LOAM )
2025-10-12 10:35:30 -07:00
find_package ( loam_velodyne )
2018-06-28 11:10:46 -04:00
IF ( loam_velodyne_FOUND )
MESSAGE ( STATUS "Found loam_velodyne: ${loam_velodyne_INCLUDE_DIRS}" )
ENDIF ( loam_velodyne_FOUND )
ENDIF ( WITH_LOAM )
2021-09-09 17:38:54 -04:00
IF ( WITH_FLOAM )
2025-10-12 10:35:30 -07:00
find_package ( floam )
2021-09-09 17:38:54 -04:00
IF ( floam_FOUND )
MESSAGE ( STATUS "Found floam: ${floam_INCLUDE_DIRS}" )
2025-10-12 10:35:30 -07:00
FIND_PACKAGE ( Ceres REQUIRED )
2021-09-09 17:38:54 -04:00
ENDIF ( floam_FOUND )
ENDIF ( WITH_FLOAM )
2026-04-12 20:06:44 -05:00
IF ( WITH_LIOSAM )
find_package ( lio_sam QUIET )
IF ( lio_sam_FOUND )
MESSAGE ( STATUS "Found lio_sam: ${lio_sam_INCLUDE_DIRS}" )
ENDIF ( lio_sam_FOUND )
ENDIF ( WITH_LIOSAM )
2021-09-09 17:38:54 -04:00
2018-02-03 15:43:32 -05:00
SET ( ZED_FOUND FALSE )
2016-05-31 19:09:49 -04:00
IF ( WITH_ZED )
2018-10-31 20:56:34 -04:00
find_package ( ZED 2 QUIET )
2017-05-17 16:59:35 -04:00
IF ( ZED_FOUND )
2016-05-31 19:09:49 -04:00
MESSAGE ( STATUS "Found ZED sdk: ${ZED_INCLUDE_DIRS}" )
2017-05-17 16:59:35 -04:00
## look for CUDA
find_package ( CUDA )
IF ( CUDA_FOUND )
MESSAGE ( STATUS "Found CUDA: ${CUDA_INCLUDE_DIRS}" )
ELSE ()
2026-03-15 14:57:27 -07:00
MESSAGE ( WARNING "CUDA is required to build with Zed sdk! Set -DWITH_ZED=OFF if you don't have CUDA." )
SET ( ZED_FOUND FALSE )
2017-05-17 16:59:35 -04:00
ENDIF ()
2016-05-31 19:09:49 -04:00
ENDIF ( ZED_FOUND )
ENDIF ( WITH_ZED )
2021-02-28 10:31:18 -05:00
IF ( WITH_ZEDOC )
find_package ( ZEDOC QUIET )
IF ( ZEDOC_FOUND )
MESSAGE ( STATUS "Found ZED Open Capture: ${ZEDOC_INCLUDE_DIRS}" )
## look for HIDAPI
find_package ( HIDAPI )
IF ( HIDAPI_FOUND )
MESSAGE ( STATUS "Found HIDAPI: ${HIDAPI_INCLUDE_DIRS}" )
ELSE ()
MESSAGE ( FATAL_ERROR "HIDAPI is required to build with Zed Open Capture! Set -DWITH_ZEDOC=OFF if you don't have HIDAPI." )
ENDIF ()
ENDIF ( ZEDOC_FOUND )
ENDIF ( WITH_ZEDOC )
2016-07-26 18:39:34 -04:00
IF ( WITH_REALSENSE )
2017-05-05 16:10:09 -04:00
IF ( WITH_REALSENSE_SLAM )
2017-05-17 16:59:35 -04:00
FIND_PACKAGE ( RealSense QUIET COMPONENTS slam )
ELSE ()
FIND_PACKAGE ( RealSense QUIET )
ENDIF ()
2016-07-26 18:39:34 -04:00
IF ( RealSense_FOUND )
MESSAGE ( STATUS "Found RealSense: ${RealSense_INCLUDE_DIRS}" )
ENDIF ( RealSense_FOUND )
2017-04-21 21:24:23 -04:00
IF ( RealSenseSlam_FOUND )
MESSAGE ( STATUS "Found RealSenseSlam: ${RealSense_INCLUDE_DIRS}" )
ENDIF ( RealSenseSlam_FOUND )
2016-07-26 18:39:34 -04:00
ENDIF ( WITH_REALSENSE )
2018-06-15 12:24:00 -04:00
IF ( WITH_REALSENSE2 )
2018-07-10 13:09:52 -04:00
IF ( WIN32 )
FIND_PACKAGE ( RealSense2 QUIET )
2020-07-02 12:54:43 -04:00
ELSE ()
2018-07-10 13:09:52 -04:00
FIND_PACKAGE ( realsense2 QUIET )
ENDIF ()
2018-06-15 12:24:00 -04:00
IF ( realsense2_FOUND )
MESSAGE ( STATUS "Found RealSense2: ${realsense2_INCLUDE_DIRS}" )
ENDIF ( realsense2_FOUND )
ENDIF ( WITH_REALSENSE2 )
2020-04-30 00:57:47 -04:00
IF ( WITH_MYNTEYE )
FIND_PACKAGE ( mynteye QUIET )
IF ( mynteye_FOUND )
MESSAGE ( STATUS "Found mynteye-s: ${mynteye_INCLUDE_DIRS}" )
ENDIF ( mynteye_FOUND )
ENDIF ( WITH_MYNTEYE )
2021-03-07 12:27:21 -05:00
IF ( WITH_DEPTHAI )
2026-07-01 18:11:28 -07:00
# Force DepthAI major version 2 (>=2.24, <3.0): the v3 API is not yet
# supported (see CameraDepthAI).
FIND_PACKAGE ( depthai 2.24...<3.0 )
2021-03-07 12:27:21 -05:00
IF ( depthai_FOUND )
MESSAGE ( STATUS "Found depthai-core (targets)" )
ENDIF ( depthai_FOUND )
ENDIF ( WITH_DEPTHAI )
2024-05-23 17:02:38 +08:00
IF ( WITH_XVSDK )
2025-10-12 10:35:30 -07:00
FIND_PACKAGE ( xvsdk )
2024-05-23 17:02:38 +08:00
IF ( xvsdk_FOUND )
MESSAGE ( STATUS "Found xvsdk (targets)" )
ENDIF ( xvsdk_FOUND )
ENDIF ( WITH_XVSDK )
2025-10-07 10:22:16 -07:00
IF ( WITH_ORBBEC_SDK )
2025-10-12 10:35:30 -07:00
FIND_PACKAGE ( OrbbecSDK 2 )
2025-10-07 10:22:16 -07:00
IF ( OrbbecSDK_FOUND )
MESSAGE ( STATUS "Found OrbbecSDK v2 (targets)" )
ENDIF ( OrbbecSDK_FOUND )
ENDIF ( WITH_ORBBEC_SDK )
2016-06-28 19:00:44 -04:00
IF ( WITH_OCTOMAP )
2020-04-18 16:03:09 -04:00
FIND_PACKAGE ( octomap QUIET )
IF ( octomap_FOUND )
2020-04-20 09:58:00 -04:00
MESSAGE ( STATUS "Found octomap ${octomap_VERSION}: ${OCTOMAP_INCLUDE_DIRS}" )
IF ( octomap_VERSION VERSION_LESS 1.8 )
2018-02-09 10:53:39 -05:00
ADD_DEFINITIONS ( "-DOCTOMAP_PRE_18" )
2020-04-20 09:58:00 -04:00
ENDIF ( octomap_VERSION VERSION_LESS 1.8 )
2020-04-18 16:03:09 -04:00
ENDIF ( octomap_FOUND )
2016-06-28 19:00:44 -04:00
ENDIF ( WITH_OCTOMAP )
2023-12-17 22:44:11 -08:00
IF ( WITH_GRIDMAP )
2025-10-12 10:35:30 -07:00
FIND_PACKAGE ( grid_map_core )
2023-12-17 22:44:11 -08:00
IF ( grid_map_core_FOUND )
MESSAGE ( STATUS "Found grid_map_core ${grid_map_core_VERSION}: ${grid_map_core_INCLUDE_DIRS}" )
ENDIF ( grid_map_core_FOUND )
ENDIF ( WITH_GRIDMAP )
2017-05-05 21:44:06 -04:00
IF ( WITH_CPUTSDF )
2025-10-12 10:35:30 -07:00
FIND_PACKAGE ( CPUTSDF )
2017-05-05 21:44:06 -04:00
IF ( CPUTSDF_FOUND )
MESSAGE ( STATUS "Found CPUTSDF: ${CPUTSDF_INCLUDE_DIRS}" )
ENDIF ( CPUTSDF_FOUND )
ENDIF ( WITH_CPUTSDF )
2018-03-26 18:06:41 -04:00
IF ( WITH_OPENCHISEL )
2025-10-12 10:35:30 -07:00
find_package ( open_chisel )
2018-03-26 18:06:41 -04:00
if ( open_chisel_FOUND )
MESSAGE ( STATUS "Found open_chisel: ${open_chisel_INCLUDE_DIRS}" )
endif ( open_chisel_FOUND )
ENDIF ( WITH_OPENCHISEL )
2019-10-24 08:56:23 -04:00
IF ( WITH_ALICE_VISION )
2025-10-12 10:35:30 -07:00
find_package ( AliceVision CONFIG )
2019-10-24 08:56:23 -04:00
IF ( AliceVision_FOUND )
2021-05-12 10:38:37 -04:00
IF ( ${ AliceVision_VERSION } VERSION_LESS_EQUAL "2.2" )
find_package ( Boost COMPONENTS log log_setup container REQUIRED )
ENDIF ( ${ AliceVision_VERSION } VERSION_LESS_EQUAL "2.2" )
2019-10-24 08:56:23 -04:00
SET ( CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};/usr/local/lib/cmake/modules" )
2025-10-12 10:35:30 -07:00
find_package ( Geogram REQUIRED )
find_package ( assimp )
2020-11-20 13:42:56 -05:00
add_definitions ( "-DRTABMAP_ALICE_VISION_MAJOR=${AliceVision_VERSION_MAJOR}" )
add_definitions ( "-DRTABMAP_ALICE_VISION_MINOR=${AliceVision_VERSION_MINOR}" )
add_definitions ( "-DRTABMAP_ALICE_VISION_PATCH=${AliceVision_VERSION_PATCH}" )
2019-10-24 08:56:23 -04:00
ENDIF ( AliceVision_FOUND )
ENDIF ( WITH_ALICE_VISION )
2017-05-30 09:27:31 -04:00
IF ( WITH_FOVIS )
2025-10-12 10:35:30 -07:00
FIND_PACKAGE ( libfovis )
2017-05-30 09:27:31 -04:00
IF ( libfovis_FOUND )
MESSAGE ( STATUS "Found libfovis: ${libfovis_INCLUDE_DIRS}" )
ENDIF ( libfovis_FOUND )
ENDIF ( WITH_FOVIS )
2017-05-30 14:03:46 -04:00
IF ( WITH_VISO2 )
2025-10-12 10:35:30 -07:00
FIND_PACKAGE ( libviso2 )
2017-05-30 14:03:46 -04:00
IF ( libviso2_FOUND )
MESSAGE ( STATUS "Found libviso2: ${libviso2_INCLUDE_DIRS}" )
ENDIF ( libviso2_FOUND )
ENDIF ( WITH_VISO2 )
2017-05-31 20:57:24 -04:00
IF ( WITH_DVO )
2025-10-12 10:35:30 -07:00
FIND_PACKAGE ( dvo_core )
2017-05-31 20:57:24 -04:00
IF ( dvo_core_FOUND )
MESSAGE ( STATUS "Found dvo_core: ${dvo_core_INCLUDE_DIRS}" )
ENDIF ( dvo_core_FOUND )
ENDIF ( WITH_DVO )
2017-05-30 14:03:46 -04:00
2018-03-07 19:43:30 -05:00
IF ( WITH_OKVIS )
2025-10-12 10:35:30 -07:00
FIND_PACKAGE ( okvis 1.1 )
2018-03-07 19:43:30 -05:00
IF ( okvis_FOUND )
MESSAGE ( STATUS "Found okvis: ${OKVIS_INCLUDE_DIRS}" )
find_package ( brisk 2 REQUIRED )
MESSAGE ( STATUS "Found brisk: ${BRISK_INCLUDE_DIRS}" )
2019-03-20 12:58:06 -04:00
find_package ( Ceres 1.9.0 REQUIRED EXACT ) # OKVIS requires this specific version
MESSAGE ( STATUS "Found ceres ${Ceres_VERSION}: ${CERES_INCLUDE_DIRS}" )
2018-03-07 19:43:30 -05:00
ENDIF ( okvis_FOUND )
ENDIF ( WITH_OKVIS )
2019-08-17 03:55:04 -04:00
# If built with okvis, we found already ceres above
2021-09-09 17:38:54 -04:00
IF ( WITH_CERES )
IF ( NOT okvis_FOUND AND NOT floam_FOUND )
2025-10-12 10:35:30 -07:00
FIND_PACKAGE ( Ceres )
2021-09-09 17:38:54 -04:00
MESSAGE ( STATUS "Found ceres ${Ceres_VERSION}: ${CERES_INCLUDE_DIRS}" )
ENDIF ( NOT okvis_FOUND AND NOT floam_FOUND )
ELSEIF ( Ceres_FOUND )
MESSAGE ( WARNING "WITH_CERES is OFF, but it still included by dependencies Okvis or FLOAM" )
ENDIF ()
2019-08-17 03:55:04 -04:00
2018-07-14 20:40:44 -04:00
IF ( WITH_MSCKF_VIO )
2025-10-12 10:35:30 -07:00
FIND_PACKAGE ( msckf_vio )
2018-07-14 20:40:44 -04:00
IF ( msckf_vio_FOUND )
MESSAGE ( STATUS "Found msckf_vio: ${msckf_vio_INCLUDE_DIRS}" )
ENDIF ( msckf_vio_FOUND )
ENDIF ( WITH_MSCKF_VIO )
2025-09-14 19:29:28 -07:00
IF ( WITH_VINS AND NOT WITH_VINS_FUSION )
message ( DEPRECATION "The option WITH_VINS is deprecated and will be removed in a future version. Please use WITH_VINS_FUSION instead." )
set ( WITH_VINS_FUSION ON )
ENDIF ( WITH_VINS AND NOT WITH_VINS_FUSION )
IF ( WITH_VINS_FUSION )
2025-10-12 10:35:30 -07:00
FIND_PACKAGE ( vins )
2019-03-18 20:45:34 -04:00
IF ( vins_FOUND )
2025-09-14 19:29:28 -07:00
MESSAGE ( STATUS "Found vins-fusion: ${vins_INCLUDE_DIRS}" )
2019-03-20 12:58:06 -04:00
IF ( okvis_FOUND )
2025-09-14 19:29:28 -07:00
MESSAGE ( WARNING "VINS-Fusion and OKVIS will be both linked to project, make sure VINS-Fusion has been built with against same Ceres version than OKVIS to avoid some crashes." )
2019-03-20 12:58:06 -04:00
ENDIF ( okvis_FOUND )
2019-03-18 20:45:34 -04:00
ENDIF ( vins_FOUND )
2025-09-14 19:29:28 -07:00
ENDIF ( WITH_VINS_FUSION )
2019-03-18 20:45:34 -04:00
2021-03-28 23:51:02 -04:00
IF ( WITH_OPENVINS )
2026-06-13 16:20:37 -07:00
FIND_PACKAGE ( OpenVINS )
2021-03-28 23:51:02 -04:00
ENDIF ( WITH_OPENVINS )
2019-08-14 12:09:56 -04:00
IF ( WITH_FASTCV )
FIND_PACKAGE ( FastCV QUIET )
IF ( FastCV_FOUND )
MESSAGE ( STATUS "Found FastCV: ${FastCV_INCLUDE_DIRS}" )
ENDIF ( FastCV_FOUND )
ENDIF ( WITH_FASTCV )
2018-07-14 20:40:44 -04:00
2026-05-26 17:43:34 -07:00
IF ( WITH_APRILTAG )
FIND_PACKAGE ( apriltag QUIET )
IF ( apriltag_FOUND )
get_target_property ( APRILTAG_LOCATION apriltag::apriltag LOCATION )
get_target_property ( APRILTAG_INCLUDES apriltag::apriltag INTERFACE_INCLUDE_DIRECTORIES )
FIND_FILE ( apriltag_aruco_4x4_50_header NAMES tagAruco4x4_50.h PATH_SUFFIXES aruco PATHS ${ APRILTAG_INCLUDES } NO_DEFAULT_PATH )
SET ( WITH_APRILTAG_ARUCO NO )
IF ( apriltag_aruco_4x4_50_header )
SET ( WITH_APRILTAG_ARUCO YES )
ENDIF ()
MESSAGE ( STATUS "Found apriltag (with aruco=${WITH_APRILTAG_ARUCO}): ${APRILTAG_LOCATION} ${APRILTAG_INCLUDES}" )
ENDIF ( apriltag_FOUND )
ENDIF ( WITH_APRILTAG )
2026-03-15 14:57:27 -07:00
IF ( WITH_OPENGV OR okvis_FOUND )
if ( NOT BUILD_OPENGV )
FIND_PACKAGE ( opengv QUIET )
endif ()
if ( opengv_FOUND )
MESSAGE ( STATUS "Found system-installed OpenGV: ${opengv_INCLUDE_DIRS}" )
elseif ( BUILD_OPENGV )
SET ( PCL_USING_MARCHNATIVE OFF )
if ( PCL_COMPILE_OPTIONS )
if ( "${PCL_COMPILE_OPTIONS}" MATCHES "-march=native" )
set ( PCL_USING_MARCHNATIVE ON )
endif ()
elseif ( "${PCL_DEFINITIONS}" MATCHES "-march=native" )
set ( PCL_USING_MARCHNATIVE ON )
endif ()
SET ( MSG_EXTRA "without -march-native (not used by PCL)" )
if ( PCL_USING_MARCHNATIVE )
set ( MSG_EXTRA "with -march-native (used by PCL)" )
endif ()
message ( STATUS "Download/Build OpenGV internally (BUILD_OPENGV=ON) ${MSG_EXTRA}." )
function ( add_submodule_opengv )
FetchContent_Declare (
opengv
GIT_REPOSITORY https://github.com/laurentkneip/opengv.git
GIT_TAG 91f4b19c73450833a40e463ad3648aae80b3a7f3
PATCH_COMMAND ${ CMAKE_COMMAND }
-DPATCH_FILE= ${ CMAKE_CURRENT_LIST_DIR } /patches/opengv_91f4b19c.patch
-P ${ CMAKE_CURRENT_LIST_DIR } /patches/apply_patch.cmake
)
set ( BUILD_SHARED_LIBS OFF )
set ( BUILD_TESTS OFF )
set ( CMAKE_BUILD_TYPE Release )
set ( CMAKE_POLICY_DEFAULT_CMP0077 NEW )
2026-06-20 18:06:55 -07:00
# OpenGV's CMakeLists.txt declares cmake_minimum_required(VERSION 2.x),
# which CMake >= 4.0 (e.g. recent Ubuntu) rejects. Allow it to configure.
set ( CMAKE_POLICY_VERSION_MINIMUM 3.5 )
2026-03-15 14:57:27 -07:00
# Eigen should have been already added by PCL, just populate the compatible variables
IF ( EIGEN_INCLUDE_DIRS )
set ( EIGEN_INCLUDE_DIRS "${EIGEN_INCLUDE_DIRS}" CACHE PATH "Eigen include dirs" FORCE )
set ( EIGEN_INCLUDE_DIR "${EIGEN_INCLUDE_DIRS}" CACHE PATH "Eigen include dir" FORCE )
ELSEIF ( Eigen3_INCLUDE_DIRS )
set ( EIGEN_INCLUDE_DIRS "${Eigen3_INCLUDE_DIRS}" CACHE PATH "Eigen include dirs" FORCE )
set ( EIGEN_INCLUDE_DIR "${Eigen3_INCLUDE_DIRS}" CACHE PATH "Eigen include dir" FORCE )
ENDIF ()
set ( BUILD_WITH_MARCHNATIVE ${ PCL_USING_MARCHNATIVE } )
FetchContent_MakeAvailable ( opengv )
endfunction ()
add_submodule_opengv ()
set ( opengv_FOUND TRUE )
set ( opengv_VERSION "internal" )
endif ()
ENDIF ()
2022-07-20 15:20:14 -04:00
2021-03-09 16:00:41 -05:00
IF ( WITH_ORB_SLAM AND NOT G2O_FOUND )
2025-10-12 10:35:30 -07:00
FIND_PACKAGE ( ORB_SLAM )
2021-03-09 16:00:41 -05:00
IF ( ORB_SLAM_FOUND )
MESSAGE ( STATUS "Found ORB_SLAM${ORB_SLAM_VERSION}: ${ORB_SLAM_INCLUDE_DIRS}" )
ENDIF ( ORB_SLAM_FOUND )
ENDIF ( WITH_ORB_SLAM AND NOT G2O_FOUND )
2017-06-05 19:04:23 -04:00
2025-10-03 11:49:21 -07:00
IF ( WITH_CUVSLAM )
2025-12-15 14:21:32 -08:00
FIND_PACKAGE ( CuVSLAM 14.0.0 )
2025-10-03 11:49:21 -07:00
IF ( CUVSLAM_FOUND )
MESSAGE ( STATUS "Found cuVSLAM: ${CUVSLAM_INCLUDE_DIRS}" )
ENDIF ()
ENDIF ( WITH_CUVSLAM )
2024-08-25 20:48:27 -07:00
SET ( DISABLE_NEW_DTAGS_FLAG "--disable-new-dtags" )
IF ( NOT ( APPLE OR WIN32 ) AND BUILD_WITH_RPATH_NOT_RUNPATH )
ADD_LINK_OPTIONS ( LINKER: ${ DISABLE_NEW_DTAGS_FLAG } )
ENDIF ()
2021-01-20 22:54:48 -05:00
IF ( NOT MSVC )
2026-04-27 06:33:05 +08:00
IF ( Qt6_FOUND OR ( G2O_FOUND AND G2O_CPP11 EQUAL 1 ) OR ( GTSAM_FOUND AND GTSAM_VERSION VERSION_GREATER_EQUAL "4.3.0" ) OR TORCH_FOUND OR MRPT_FOUND )
2023-03-05 16:34:56 -08:00
# Qt6 requires c++17
include ( CheckCXXCompilerFlag )
2023-03-22 20:42:33 -07:00
CHECK_CXX_COMPILER_FLAG ( "-std=c++17" COMPILER_SUPPORTS_CXX17 )
IF ( COMPILER_SUPPORTS_CXX17 )
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17" )
set ( CMAKE_CXX_STANDARD 17 )
ELSE ()
message ( STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++17 support. Please use a different C++ compiler if you want to use Qt6." )
ENDIF ()
ENDIF ()
2023-09-16 14:26:17 -07:00
IF (( NOT ( ${ CMAKE_CXX_STANDARD } STREQUAL "17" )) AND ( msckf_vio_FOUND OR loam_velodyne_FOUND OR floam_FOUND OR PCL_VERSION VERSION_GREATER "1.9.1" OR G2O_FOUND OR CCCoreLib_FOUND OR Open3D_FOUND ))
2023-07-24 14:08:04 +08:00
#MSCKF_VIO, LOAM, PCL>=1.10, latest g2o and CCCoreLib require c++14
2023-03-22 20:42:33 -07:00
include ( CheckCXXCompilerFlag )
CHECK_CXX_COMPILER_FLAG ( "-std=c++14" COMPILER_SUPPORTS_CXX14 )
IF ( COMPILER_SUPPORTS_CXX14 )
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14" )
set ( CMAKE_CXX_STANDARD 14 )
ELSE ()
message ( STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++14 support. Please use a different C++ compiler if you want to use LOAM, latest PCL or g2o." )
ENDIF ()
2023-03-05 16:34:56 -08:00
ENDIF ()
2021-01-20 22:54:48 -05:00
2023-12-19 19:39:50 -08:00
IF ( NOT ( "${CMAKE_CXX_STANDARD}" STREQUAL "17" ) AND NOT ( "${CMAKE_CXX_STANDARD}" STREQUAL "14" ))
2023-03-22 20:42:33 -07:00
#Newest versions require std11
include ( CheckCXXCompilerFlag )
CHECK_CXX_COMPILER_FLAG ( "-std=c++11" COMPILER_SUPPORTS_CXX11 )
CHECK_CXX_COMPILER_FLAG ( "-std=c++0x" COMPILER_SUPPORTS_CXX0X )
IF ( COMPILER_SUPPORTS_CXX11 )
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11" )
ELSEIF ( COMPILER_SUPPORTS_CXX0X )
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x" )
ELSE ()
message ( STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler." )
ENDIF ()
ENDIF ()
2018-07-03 10:13:22 -04:00
ENDIF ()
2016-05-31 20:19:04 -04:00
2023-11-19 01:05:52 -08:00
2011-06-05 14:45:39 +00:00
####### OSX BUNDLE CMAKE_INSTALL_PREFIX #######
IF ( APPLE AND BUILD_AS_BUNDLE )
2023-03-05 16:34:56 -08:00
IF ( Qt6_FOUND OR Qt5_FOUND OR ( QT4_FOUND AND QT_QTCORE_FOUND AND QT_QTGUI_FOUND ))
2014-08-28 22:32:09 +00:00
2011-06-05 14:45:39 +00:00
# Required when packaging, and set CMAKE_INSTALL_PREFIX to "/".
2012-12-11 18:05:05 +00:00
SET ( CMAKE_INSTALL_PREFIX "/" )
2011-06-05 14:45:39 +00:00
SET ( CPACK_SET_DESTDIR TRUE )
2014-08-29 00:45:50 +00:00
SET ( CMAKE_BUNDLE_NAME "${PROJECT_NAME}" )
2011-06-05 14:45:39 +00:00
SET ( CMAKE_BUNDLE_LOCATION "${CMAKE_INSTALL_PREFIX}" )
# make sure CMAKE_INSTALL_PREFIX ends in /
STRING ( LENGTH "${CMAKE_INSTALL_PREFIX}" LEN )
MATH ( EXPR LEN "${LEN} -1" )
STRING ( SUBSTRING "${CMAKE_INSTALL_PREFIX}" ${ LEN } 1 ENDCH )
IF ( NOT "${ENDCH}" STREQUAL "/" )
SET ( CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}/" )
ENDIF ( NOT "${ENDCH}" STREQUAL "/" )
SET ( CMAKE_INSTALL_PREFIX
"${CMAKE_INSTALL_PREFIX}${CMAKE_BUNDLE_NAME}.app/Contents" )
ELSE ()
#If Qt is not here, no need to build a bundle
SET ( BUILD_AS_BUNDLE OFF )
ENDIF ()
ENDIF ( APPLE AND BUILD_AS_BUNDLE )
####### SOURCES (Projects) #######
2016-06-01 13:13:30 -04:00
2020-05-25 17:29:22 -04:00
# OpenCV2 has nonfree if OPENCV_NONFREE_FOUND
# OpenCV<=3.4.2 has nonfree if OPENCV_XFEATURES2D_FOUND
# OpenCV>3.4.2 has nonfree if OPENCV_XFEATURES2D_FOUND and OPENCV_ENABLE_NONFREE is defined
2016-03-01 14:25:00 -05:00
IF ( NOT ( OPENCV_NONFREE_FOUND OR OPENCV_XFEATURES2D_FOUND ))
SET ( NONFREE "//" )
2018-11-02 11:52:35 -04:00
ELSEIF ( OpenCV_VERSION VERSION_GREATER "3.4.2" )
FIND_FILE ( OpenCV_MODULES_HPP opencv2/opencv_modules.hpp
PATHS ${ OpenCV_INCLUDE_DIRS }
NO_DEFAULT_PATH )
FILE ( READ ${ OpenCV_MODULES_HPP } TMPTXT )
STRING ( FIND "${TMPTXT}" "#define OPENCV_ENABLE_NONFREE" matchres )
IF ( ${ matchres } EQUAL -1 )
SET ( NONFREE "//" )
ENDIF ( ${ matchres } EQUAL -1 )
ENDIF ()
2016-03-01 14:25:00 -05:00
IF ( NOT G2O_FOUND )
SET ( G2O "//" )
2022-01-15 13:00:12 -05:00
SET ( G2O_CPP_CONF "//" )
2025-10-13 22:54:35 -07:00
SET ( G2O_WITH_SBA_UTILS "//" )
2016-06-01 13:13:30 -04:00
ELSE ()
2018-02-03 15:43:32 -05:00
IF ( NOT G2O_CPP11 )
2023-02-12 16:18:01 -08:00
SET ( G2O_CPP_CONF "//" )
2018-02-03 15:43:32 -05:00
ENDIF ( NOT G2O_CPP11 )
2025-10-13 22:54:35 -07:00
IF ( NOT G2O_WITH_SBA_UTILS )
SET ( G2O_WITH_SBA_UTILS_CONF "//" )
ENDIF ( NOT G2O_WITH_SBA_UTILS )
2016-06-01 13:13:30 -04:00
ENDIF ()
2016-03-01 14:25:00 -05:00
IF ( NOT GTSAM_FOUND )
SET ( GTSAM "//" )
2016-06-01 13:13:30 -04:00
ENDIF ()
2023-02-03 17:25:38 -08:00
IF ( NOT MRPT_FOUND )
SET ( MRPT "//" )
ENDIF ( NOT MRPT_FOUND )
2024-03-16 17:10:34 -07:00
IF ( NOT WITH_CERES OR NOT CERES_FOUND )
2019-08-17 03:55:04 -04:00
SET ( CERES "//" )
2024-03-16 17:10:34 -07:00
ENDIF ( NOT WITH_CERES OR NOT CERES_FOUND )
2016-03-01 14:25:00 -05:00
IF ( NOT WITH_TORO )
SET ( TORO "//" )
ENDIF ( NOT WITH_TORO )
IF ( NOT WITH_VERTIGO )
SET ( VERTIGO "//" )
ENDIF ( NOT WITH_VERTIGO )
IF ( NOT cvsba_FOUND )
SET ( CVSBA "//" )
2016-06-01 13:13:30 -04:00
ENDIF ()
2017-08-22 16:20:49 -04:00
IF ( NOT libpointmatcher_FOUND )
SET ( POINTMATCHER "//" )
ENDIF ( NOT libpointmatcher_FOUND )
2021-03-27 15:11:20 -04:00
IF ( NOT CCCoreLib_FOUND )
SET ( CCCORELIB "//" )
ENDIF ( NOT CCCoreLib_FOUND )
2021-11-13 19:45:57 -05:00
IF ( NOT Open3D_FOUND )
SET ( OPEN3D "//" )
ENDIF ( NOT Open3D_FOUND )
2019-08-14 12:09:56 -04:00
IF ( NOT FastCV_FOUND )
SET ( FASTCV "//" )
ENDIF ( NOT FastCV_FOUND )
2026-05-26 17:43:34 -07:00
IF ( NOT apriltag_FOUND )
SET ( APRILTAG "//" )
SET ( APRILTAG_ARUCO "//" )
ELSEIF ( NOT WITH_APRILTAG_ARUCO )
SET ( APRILTAG_ARUCO "//" )
ENDIF ()
2023-11-19 01:05:52 -08:00
IF ( NOT opengv_FOUND OR NOT WITH_OPENGV )
2022-07-20 15:20:14 -04:00
SET ( OPENGV "//" )
2023-11-19 01:05:52 -08:00
ENDIF ( NOT opengv_FOUND OR NOT WITH_OPENGV )
2021-01-14 15:49:18 -05:00
IF ( NOT PDAL_FOUND )
SET ( PDAL "//" )
ENDIF ( NOT PDAL_FOUND )
2024-10-06 17:16:22 -07:00
IF ( NOT libLAS_FOUND )
SET ( LIBLAS "//" )
ENDIF ( NOT libLAS_FOUND )
2024-09-13 14:22:54 -07:00
IF ( NOT CudaSift_FOUND )
SET ( CUDASIFT "//" )
ENDIF ( NOT CudaSift_FOUND )
2018-06-28 11:10:46 -04:00
IF ( NOT loam_velodyne_FOUND )
SET ( LOAM "//" )
ENDIF ( NOT loam_velodyne_FOUND )
2021-09-09 17:38:54 -04:00
IF ( NOT floam_FOUND )
SET ( FLOAM "//" )
ENDIF ( NOT floam_FOUND )
2026-04-12 20:06:44 -05:00
IF ( NOT lio_sam_FOUND )
SET ( LIOSAM "//" )
ENDIF ( NOT lio_sam_FOUND )
2016-03-01 14:25:00 -05:00
IF ( NOT Freenect_FOUND )
SET ( FREENECT "//" )
2016-06-01 13:13:30 -04:00
ENDIF ()
2016-03-01 14:25:00 -05:00
IF ( NOT freenect2_FOUND )
SET ( FREENECT2 "//" )
2016-06-01 13:13:30 -04:00
ENDIF ()
2017-11-06 00:19:12 -05:00
IF ( NOT KinectSDK2_FOUND )
SET ( K4W2 "//" )
ENDIF ()
2019-07-10 12:34:13 -04:00
IF ( NOT k4a_FOUND )
2019-07-09 20:48:09 -04:00
SET ( K4A "//" )
2023-02-12 16:18:01 -08:00
SET ( CONF_WITH_K4A 0 )
2019-07-09 20:48:09 -04:00
ELSE ()
2023-02-12 16:18:01 -08:00
SET ( CONF_WITH_K4A 1 )
IF ( WIN32 )
install (
FILES
"${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/FindK4A.cmake"
DESTINATION ${ INSTALL_CMAKE_DIR } /Modules/.
COMPONENT devel
)
ENDIF ( WIN32 )
2019-07-09 20:48:09 -04:00
ENDIF ()
2024-06-15 23:12:07 +02:00
IF ( NOT ( OpenNI_FOUND AND WITH_OPENNI ))
SET ( OPENNI "//" )
ENDIF ()
2016-03-01 14:25:00 -05:00
IF ( NOT OpenNI2_FOUND )
SET ( OPENNI2 "//" )
2016-06-01 13:13:30 -04:00
ENDIF ()
2016-03-01 14:25:00 -05:00
IF ( NOT DC1394_FOUND )
SET ( DC1394 "//" )
2016-06-01 13:13:30 -04:00
ENDIF ()
2016-03-01 14:25:00 -05:00
IF ( NOT FlyCapture2_FOUND )
SET ( FLYCAPTURE2 "//" )
2016-06-01 13:13:30 -04:00
ENDIF ()
2016-05-31 19:09:49 -04:00
IF ( NOT ZED_FOUND )
SET ( ZED "//" )
2016-06-01 13:13:30 -04:00
ENDIF ()
2021-02-28 10:31:18 -05:00
IF ( NOT ZEDOC_FOUND )
SET ( ZEDOC "//" )
ENDIF ()
2016-07-26 18:39:34 -04:00
IF ( NOT RealSense_FOUND )
SET ( REALSENSE "//" )
ENDIF ()
2017-04-21 21:58:38 -04:00
IF ( NOT RealSenseSlam_FOUND )
SET ( REALSENSESLAM "//" )
ENDIF ( NOT RealSenseSlam_FOUND )
2018-06-15 12:24:00 -04:00
IF ( NOT realsense2_FOUND )
SET ( REALSENSE2 "//" )
2023-02-12 16:18:01 -08:00
SET ( CONF_WITH_REALSENSE2 0 )
2018-06-15 12:24:00 -04:00
ELSE ()
2023-02-12 16:18:01 -08:00
SET ( CONF_WITH_REALSENSE2 1 )
IF ( WIN32 )
install (
FILES
"${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/FindRealSense2.cmake"
DESTINATION ${ INSTALL_CMAKE_DIR } /Modules/.
COMPONENT devel
)
ENDIF ( WIN32 )
2018-06-15 12:24:00 -04:00
ENDIF ()
2020-04-30 00:57:47 -04:00
IF ( NOT mynteye_FOUND )
SET ( MYNTEYE "//" )
ENDIF ( NOT mynteye_FOUND )
2021-03-07 12:27:21 -05:00
IF ( NOT depthai_FOUND )
2023-05-06 12:43:50 -07:00
SET ( CONF_WITH_DEPTH_AI 0 )
2021-03-07 12:27:21 -05:00
SET ( DEPTHAI "//" )
2021-07-28 14:19:30 -04:00
ELSE ()
2023-05-06 12:43:50 -07:00
SET ( CONF_WITH_DEPTH_AI 1 )
2021-07-28 14:19:30 -04:00
ENDIF ()
2024-05-23 17:02:38 +08:00
IF ( NOT xvsdk_FOUND )
SET ( XVSDK "//" )
SET ( CONF_WITH_XVSDK 0 )
ELSE ()
SET ( CONF_WITH_XVSDK 1 )
ENDIF ()
2025-10-07 10:22:16 -07:00
IF ( NOT OrbbecSDK_FOUND )
SET ( ORBBEC_SDK "//" )
ENDIF ( NOT OrbbecSDK_FOUND )
2020-04-18 16:03:09 -04:00
IF ( NOT octomap_FOUND )
2016-06-28 19:00:44 -04:00
SET ( OCTOMAP "//" )
2023-02-12 16:18:01 -08:00
SET ( CONF_WITH_OCTOMAP 0 )
2016-06-28 19:00:44 -04:00
ELSE ()
2023-02-12 16:18:01 -08:00
SET ( CONF_WITH_OCTOMAP 1 )
2016-06-28 19:00:44 -04:00
ENDIF ()
2023-12-17 22:44:11 -08:00
IF ( NOT grid_map_core_FOUND )
SET ( GRIDMAP "//" )
ENDIF ()
2017-05-05 21:44:06 -04:00
IF ( NOT CPUTSDF_FOUND )
SET ( CPUTSDF "//" )
ENDIF ()
2018-03-26 18:06:41 -04:00
IF ( NOT open_chisel_FOUND )
SET ( OPENCHISEL "//" )
ENDIF ()
2019-10-24 08:56:23 -04:00
IF ( NOT AliceVision_FOUND )
SET ( ALICE_VISION "//" )
ENDIF ( NOT AliceVision_FOUND )
2017-05-30 09:27:31 -04:00
IF ( NOT libfovis_FOUND )
SET ( FOVIS "//" )
ENDIF ()
2017-05-30 14:03:46 -04:00
IF ( NOT libviso2_FOUND )
SET ( VISO2 "//" )
ENDIF ()
2017-05-31 20:57:24 -04:00
IF ( NOT dvo_core_FOUND )
SET ( DVO "//" )
ENDIF ()
2018-03-07 19:43:30 -05:00
IF ( NOT okvis_FOUND )
SET ( OKVIS "//" )
ENDIF ()
2018-07-14 20:40:44 -04:00
IF ( NOT msckf_vio_FOUND )
SET ( MSCKF_VIO "//" )
ENDIF ()
2019-03-18 20:45:34 -04:00
IF ( NOT vins_FOUND )
2025-09-14 19:29:28 -07:00
SET ( VINSFUSION "//" )
2019-03-18 20:45:34 -04:00
ENDIF ()
2026-06-13 16:20:37 -07:00
IF ( NOT OpenVINS_FOUND )
2021-03-28 23:51:02 -04:00
SET ( OPENVINS "//" )
ENDIF ()
2025-10-03 11:49:21 -07:00
IF ( NOT CUVSLAM_FOUND )
SET ( CUVSLAM "//" )
ENDIF ()
2021-03-09 16:00:41 -05:00
IF ( NOT ORB_SLAM_FOUND )
SET ( ORB_SLAM "//" )
2017-06-05 19:04:23 -04:00
ENDIF ()
2019-04-18 19:50:58 -04:00
IF ( NOT WITH_ORB_OCTREE )
SET ( ORB_OCTREE "//" )
ENDIF ()
2020-04-16 17:59:45 -04:00
IF ( NOT TORCH_FOUND )
2021-01-17 01:56:27 -05:00
SET ( TORCH "//" )
2020-05-09 21:13:41 -04:00
ENDIF ()
2021-11-16 18:22:45 -05:00
IF ( NOT WITH_PYTHON OR NOT Python3_FOUND )
2021-01-17 01:56:27 -05:00
SET ( PYTHON "//" )
2023-06-21 21:04:29 -07:00
SET ( CONF_WITH_PYTHON 0 )
ELSE ()
SET ( CONF_WITH_PYTHON 1 )
2020-04-16 17:59:45 -04:00
ENDIF ()
2016-09-27 15:43:23 -04:00
IF ( ADD_VTK_GUI_SUPPORT_QT_TO_CONF )
2016-09-29 12:40:51 -04:00
SET ( CONF_VTK_QT true )
ELSE ()
SET ( CONF_VTK_QT false )
ENDIF ()
2019-05-07 18:57:53 -04:00
IF ( NOT WITH_MADGWICK )
SET ( MADGWICK "//" )
ENDIF ()
2017-10-16 16:00:52 +02:00
2023-02-12 16:18:01 -08:00
CONFIGURE_FILE ( Version.h.in ${ CMAKE_CURRENT_BINARY_DIR } /corelib/src/include/ ${ PROJECT_PREFIX } /core/Version.h )
2026-08-06 13:32:20 -07:00
# API documentation (Doxygen). Off by default: preparing it downloads the theme,
# spawns Doxygen to regenerate the HTML header and runs the parameter-page
# generator, none of which an ordinary build needs. docs-report.sh turns it on;
# see also .github/workflows/docs.yml.
IF ( BUILD_DOCUMENTATION )
INCLUDE ( RTABMapDocumentation )
RTABMAP_SETUP_DOCUMENTATION ()
ENDIF ( BUILD_DOCUMENTATION )
2013-04-30 20:16:01 +00:00
ADD_SUBDIRECTORY ( utilite )
2011-06-05 14:45:39 +00:00
ADD_SUBDIRECTORY ( corelib )
2016-02-15 19:35:24 -05:00
IF ( ANDROID )
IF ( BUILD_APP )
ADD_SUBDIRECTORY ( app )
ENDIF ( BUILD_APP )
2015-08-13 15:12:43 -04:00
ELSEIF ( WITH_QT )
2024-06-15 14:21:51 -07:00
IF ( Qt6_FOUND OR Qt5_FOUND OR ( QT4_FOUND AND QT_QTCORE_FOUND AND QT_QTGUI_FOUND ))
ADD_SUBDIRECTORY ( guilib )
IF ( BUILD_APP )
ADD_SUBDIRECTORY ( app )
ENDIF ( BUILD_APP )
ELSE ()
MESSAGE ( WARNING "Qt not found, the GUI lib and the stand-alone application will not be compiled..." )
ENDIF ()
2011-06-05 14:45:39 +00:00
ENDIF ()
2016-01-21 17:11:57 -05:00
IF ( BUILD_TOOLS )
ADD_SUBDIRECTORY ( tools )
ENDIF ( BUILD_TOOLS )
IF ( BUILD_EXAMPLES )
ADD_SUBDIRECTORY ( examples )
ENDIF ( BUILD_EXAMPLES )
2012-06-24 17:19:34 +00:00
2011-06-05 14:45:39 +00:00
#######################
# Uninstall target, for "make uninstall"
#######################
2024-01-03 18:08:06 -08:00
IF ( NOT TARGET uninstall )
2011-06-05 14:45:39 +00:00
CONFIGURE_FILE (
"${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
IMMEDIATE @ONLY )
ADD_CUSTOM_TARGET ( uninstall
"${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" )
2024-01-03 18:08:06 -08:00
ENDIF ()
2011-06-05 14:45:39 +00:00
2013-12-11 00:12:44 +00:00
####
2023-02-12 16:18:01 -08:00
# Global Export Target
2013-12-11 00:12:44 +00:00
####
2023-02-12 16:18:01 -08:00
add_library ( rtabmap INTERFACE )
2023-02-22 23:07:30 -08:00
add_library ( rtabmap::rtabmap ALIAS rtabmap )
2024-06-15 14:21:51 -07:00
IF ( WITH_QT AND ( QT4_FOUND OR Qt5_FOUND OR Qt6_FOUND ))
2016-01-21 17:11:57 -05:00
set ( CONF_WITH_GUI ON )
2016-05-09 11:17:51 -04:00
IF ( QT4_FOUND )
set ( CONF_QT_VERSION 4 )
2023-03-05 16:34:56 -08:00
ELSEIF ( Qt5_FOUND )
2016-05-09 11:17:51 -04:00
set ( CONF_QT_VERSION 5 )
2023-03-05 16:34:56 -08:00
ELSE ()
set ( CONF_QT_VERSION 6 )
2016-05-09 11:17:51 -04:00
ENDIF ()
2023-02-12 16:18:01 -08:00
target_link_libraries ( rtabmap INTERFACE rtabmap_utilite rtabmap_core rtabmap_gui )
2016-01-21 17:11:57 -05:00
ELSE ()
set ( CONF_WITH_GUI OFF )
2023-02-12 16:18:01 -08:00
target_link_libraries ( rtabmap INTERFACE rtabmap_utilite rtabmap_core )
2016-01-21 17:11:57 -05:00
ENDIF ()
2023-02-12 16:18:01 -08:00
install ( TARGETS rtabmap EXPORT rtabmapTargets )
export ( EXPORT rtabmapTargets
FILE "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Targets.cmake"
2023-02-22 23:07:30 -08:00
NAMESPACE rtabmap::
2023-02-12 16:18:01 -08:00
)
install ( EXPORT rtabmapTargets
FILE
${ PROJECT_NAME } Targets.cmake
DESTINATION
${ INSTALL_CMAKE_DIR }
2023-02-22 23:07:30 -08:00
NAMESPACE rtabmap::
2023-02-12 16:18:01 -08:00
COMPONENT
devel
)
2013-12-11 00:12:44 +00:00
2023-02-12 16:18:01 -08:00
####
# Setup RTABMapConfig.cmake
####
2026-07-29 22:48:39 -07:00
IF ( OpenCV_VERSION_MAJOR GREATER 4 )
SET ( CONF_OPENCV_COMPONENTS ${ RTABMAP_OpenCV_COMPONENTS_5 } )
SET ( CONF_OPENCV_OPTIONAL_COMPONENTS ${ RTABMAP_OpenCV_OPTIONAL_COMPONENTS_5 } )
ELSE ()
SET ( CONF_OPENCV_COMPONENTS ${ RTABMAP_OpenCV_COMPONENTS_4 } )
SET ( CONF_OPENCV_OPTIONAL_COMPONENTS ${ RTABMAP_OpenCV_OPTIONAL_COMPONENTS_4 } )
ENDIF ()
STRING ( REPLACE ";" " " CONF_OPENCV_COMPONENTS "${CONF_OPENCV_COMPONENTS}" )
STRING ( REPLACE ";" " " CONF_OPENCV_OPTIONAL_COMPONENTS "${CONF_OPENCV_OPTIONAL_COMPONENTS}" )
# Pin the OpenCV major version so downstream projects find the same major RTAB-Map was
# built against
SET ( CONF_OPENCV_VERSION_MAJOR ${ OpenCV_VERSION_MAJOR } )
2023-02-12 16:18:01 -08:00
include ( CMakePackageConfigHelpers )
write_basic_package_version_file (
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
VERSION ${ PROJECT_VERSION }
COMPATIBILITY AnyNewerVersion
)
# Build tree:
SET ( CONF_MODULES_DIR "../cmake_modules" )
configure_file (
${ PROJECT_NAME } Config.cmake.in
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
@ONLY
)
# Install tree:
SET ( CONF_MODULES_DIR "Modules" )
configure_file (
${ PROJECT_NAME } Config.cmake.in
"${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${PROJECT_NAME}Config.cmake"
@ONLY
)
install (
FILES
"${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${PROJECT_NAME}Config.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
DESTINATION
${ INSTALL_CMAKE_DIR }
COMPONENT
devel
)
2013-12-11 00:12:44 +00:00
####
2011-06-05 14:45:39 +00:00
2014-11-25 15:00:46 -05:00
### Install package.xml for catkin
2023-02-12 16:18:01 -08:00
install ( FILES package.xml DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_PREFIX}" COMPONENT devel )
2014-11-25 15:00:46 -05:00
2011-06-05 14:45:39 +00:00
#######################
# CPACK (Packaging)
#######################
2018-10-11 15:19:20 -04:00
IF ( BUILD_AS_BUNDLE )
2023-02-12 16:18:01 -08:00
SET ( CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT runtime )
2026-03-15 14:57:27 -07:00
IF ( WIN32 )
set ( CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP TRUE )
set ( CPACK_NSIS_EXTRA_INSTALL_COMMANDS "
ExecWait '\\\" $ INSTDIR\\\\vc_redist.x64.exe\\\ " /quiet /norestart'
" )
ENDIF ()
2018-10-11 15:19:20 -04:00
INCLUDE ( InstallRequiredSystemLibraries )
2026-03-15 14:57:27 -07:00
set ( CPACK_NSIS_COMPONENT_INSTALL OFF )
set ( CPACK_ARCHIVE_COMPONENT_INSTALL ON )
set ( CPACK_COMPONENTS_GROUPING ALL_COMPONENTS_IN_ONE )
set ( CPACK_COMPONENTS_ALL runtime )
2018-10-11 15:19:20 -04:00
ENDIF ( BUILD_AS_BUNDLE )
2011-06-05 14:45:39 +00:00
SET ( CPACK_PACKAGE_NAME "${PROJECT_NAME}" )
SET ( CPACK_PACKAGE_VENDOR "${PROJECT_NAME} project" )
2012-03-03 01:46:30 +00:00
SET ( CPACK_PACKAGE_DESCRIPTION_SUMMARY "RTAB-MAP is a Real-Time Appearance-Based Mapping approach." )
2011-06-05 14:45:39 +00:00
#SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/Description.txt")
#SET(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/README.txt")
SET ( CPACK_PACKAGE_VERSION_MAJOR "${PROJECT_VERSION_MAJOR}" )
SET ( CPACK_PACKAGE_VERSION_MINOR "${PROJECT_VERSION_MINOR}" )
SET ( CPACK_PACKAGE_VERSION_PATCH "${PROJECT_VERSION_PATCH}" )
#SET(CPACK_PACKAGE_INSTALL_DIRECTORY "${PROJECT_NAME}${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}")
#SET(CPACK_PACKAGE_EXECUTABLES "")
#SET(CPACK_SOURCE_PACKAGE_FILE_NAME "${PROJECT_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
SET ( CPACK_PACKAGE_CONTACT "matlabbe@gmail.com" )
2023-02-12 16:18:01 -08:00
2011-06-05 14:45:39 +00:00
set ( CPACK_SOURCE_IGNORE_FILES
"\\\\.svn/"
2014-06-11 16:10:58 +00:00
"\\\\.settings/"
2011-06-05 14:45:39 +00:00
"${PROJECT_SOURCE_DIR}/build/[a-zA-Z0-9_]+"
"~$"
"${PROJECT_SOURCE_DIR}/bin/.*${PROJECT_PREFIX}"
"${PROJECT_SOURCE_DIR}/bin/.*${PROJECT_NAME}"
"${PROJECT_SOURCE_DIR}/bin/.*[tT]est"
"${PROJECT_SOURCE_DIR}/bin/.*[eE]xample"
2013-12-11 01:39:24 +00:00
"${PROJECT_SOURCE_DIR}/bin/.*uresourcegenerator"
2011-06-05 14:45:39 +00:00
"\\\\.DS_Store"
)
IF ( WIN32 )
2014-08-11 17:00:55 +00:00
SET ( CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE" )
2014-06-17 02:38:41 +00:00
IF ( CMAKE_CL_64 )
SET ( CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64" )
ELSE ()
SET ( CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES" )
ENDIF ()
2018-09-04 15:44:37 -04:00
IF ( BUILD_AS_BUNDLE )
SET ( CPACK_GENERATOR "ZIP;NSIS" )
ELSE ()
SET ( CPACK_GENERATOR "ZIP" )
ENDIF ()
2011-06-05 14:45:39 +00:00
SET ( CPACK_SOURCE_GENERATOR "ZIP" )
2015-07-27 11:04:48 -04:00
SET ( CPACK_NSIS_PACKAGE_NAME "${PROJECT_NAME}" )
2011-06-21 17:19:45 +00:00
SET ( ICON_PATH "${PROJECT_SOURCE_DIR}/app/src/${PROJECT_NAME}.ico" )
2011-06-05 14:45:39 +00:00
SET ( CPACK_NSIS_MUI_ICON ${ ICON_PATH } )
SET ( CPACK_NSIS_MUI_UNIICON ${ ICON_PATH } )
2015-07-27 11:04:48 -04:00
SET ( CPACK_PACKAGE_INSTALL_DIRECTORY "${PROJECT_NAME}" )
2011-06-05 14:45:39 +00:00
#SET(CPACK_PACKAGE_ICON ${ICON_PATH})
#SET(CPACK_NSIS_INSTALLED_ICON_NAME ${ICON_PATH})
#SET(CPACK_NSIS_HELP_LINK "http:\\\\\\\\www.${PROJECT_PREFIX}.googlecode.com")
#SET(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\www.${PROJECT_PREFIX}.googlecode.com")
SET ( CPACK_NSIS_DISPLAY_NAME "${PROJECT_NAME}" )
SET ( CPACK_NSIS_CONTACT ${ CPACK_PACKAGE_CONTACT } )
# Set the icon used for the Windows "Add or Remove Programs" tool.
SET ( CPACK_NSIS_INSTALLED_ICON_NAME bin\\\\ ${ PROJECT_NAME } .exe )
# Desktop link ("executableName" "linkName")
SET ( CPACK_PACKAGE_EXECUTABLES "${PROJECT_NAME}" "${PROJECT_NAME}" ${ CPACK_PACKAGE_EXECUTABLES } )
SET ( CPACK_CREATE_DESKTOP_LINKS "${PROJECT_NAME}" ${ CPACK_CREATE_DESKTOP_LINKS } )
SET ( CPACK_NSIS_MODIFY_PATH ON )
ELSEIF ( APPLE )
2011-06-21 17:19:45 +00:00
# The project is created as a bundle over the main app (see ./app/src).
2011-06-05 14:45:39 +00:00
# Here we package only this bundle. Note that we set
# CMAKE_INSTALL_PREFIX to "/" when packaging...
IF ( BUILD_AS_BUNDLE )
SET ( CPACK_GENERATOR "DragNDrop" )
ELSE ()
SET ( CPACK_GENERATOR "PackageMaker;TBZ2" )
ENDIF ()
2014-06-11 15:55:59 +00:00
SET ( CPACK_SOURCE_GENERATOR "ZIP" )
2011-06-05 14:45:39 +00:00
2011-06-21 17:19:45 +00:00
SET ( CPACK_PACKAGE_ICON "${PROJECT_SOURCE_DIR}/app/src/${PROJECT_NAME}.icns" )
2011-06-05 14:45:39 +00:00
ELSE ()
2014-08-11 17:00:55 +00:00
SET ( CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE" )
2013-12-11 01:39:24 +00:00
SET ( CPACK_GENERATOR "TBZ2" )
2014-06-11 15:55:59 +00:00
SET ( CPACK_SOURCE_GENERATOR "ZIP" )
2011-06-05 14:45:39 +00:00
ENDIF ()
INCLUDE ( CPack )
MESSAGE ( STATUS "--------------------------------------------" )
MESSAGE ( STATUS "Info :" )
2021-04-02 19:06:03 -04:00
MESSAGE ( STATUS " RTAB-Map Version = ${RTABMAP_VERSION}" )
MESSAGE ( STATUS " CMAKE_VERSION = ${CMAKE_VERSION}" )
2011-06-05 14:45:39 +00:00
MESSAGE ( STATUS " CMAKE_INSTALL_PREFIX = ${CMAKE_INSTALL_PREFIX}" )
2016-03-23 19:56:45 -04:00
MESSAGE ( STATUS " CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE}" )
MESSAGE ( STATUS " CMAKE_INSTALL_LIBDIR = ${CMAKE_INSTALL_LIBDIR}" )
MESSAGE ( STATUS " BUILD_APP = ${BUILD_APP}" )
MESSAGE ( STATUS " BUILD_TOOLS = ${BUILD_TOOLS}" )
MESSAGE ( STATUS " BUILD_EXAMPLES = ${BUILD_EXAMPLES}" )
2026-08-06 13:32:20 -07:00
MESSAGE ( STATUS " BUILD_TESTING = ${BUILD_TESTING}" )
2026-08-16 19:51:39 +03:00
MESSAGE ( STATUS " BUILD_PERF_TESTS = ${BUILD_PERF_TESTS}" )
2026-08-06 13:32:20 -07:00
MESSAGE ( STATUS " ENABLE_COVERAGE = ${ENABLE_COVERAGE}" )
MESSAGE ( STATUS " ENABLE_FORMAT_ERRORS = ${ENABLE_FORMAT_ERRORS}" )
2012-06-24 17:19:34 +00:00
IF ( NOT WIN32 )
2017-05-17 16:59:35 -04:00
# see comment above for the BUILD_SHARED_LIBS option on Windows
MESSAGE ( STATUS " BUILD_SHARED_LIBS = ${BUILD_SHARED_LIBS}" )
2012-06-24 17:19:34 +00:00
ENDIF ( NOT WIN32 )
2018-09-04 15:44:37 -04:00
IF ( APPLE OR WIN32 )
2016-03-23 19:56:45 -04:00
MESSAGE ( STATUS " BUILD_AS_BUNDLE = ${BUILD_AS_BUNDLE}" )
2018-09-04 15:44:37 -04:00
ENDIF ( APPLE OR WIN32 )
2016-01-11 17:21:06 -05:00
MESSAGE ( STATUS " CMAKE_CXX_FLAGS = ${CMAKE_CXX_FLAGS}" )
2024-08-25 20:48:27 -07:00
IF ( NOT ( APPLE OR WIN32 ) AND BUILD_WITH_RPATH_NOT_RUNPATH )
MESSAGE ( STATUS " LINKER FLAGS = ${DISABLE_NEW_DTAGS_FLAG}" )
ENDIF ()
2019-02-07 20:52:20 -05:00
MESSAGE ( STATUS " FLANN_KDTREE_MEM_OPT = ${FLANN_KDTREE_MEM_OPT}" )
2018-03-26 18:06:41 -04:00
MESSAGE ( STATUS " PCL_DEFINITIONS = ${PCL_DEFINITIONS}" )
2019-08-17 03:55:04 -04:00
MESSAGE ( STATUS " PCL_VERSION = ${PCL_VERSION}" )
2018-12-01 22:40:02 -05:00
IF ( PCL_COMPILE_OPTIONS )
MESSAGE ( STATUS " PCL_COMPILE_OPTIONS = ${PCL_COMPILE_OPTIONS}" )
ENDIF ( PCL_COMPILE_OPTIONS )
2014-06-13 23:44:38 +00:00
2019-08-17 03:55:04 -04:00
MESSAGE ( STATUS "" )
2018-09-18 17:00:37 -04:00
MESSAGE ( STATUS "Optional dependencies ('*' affects some default parameters) :" )
2015-06-19 18:12:52 -04:00
IF ( OpenCV_FOUND )
2026-07-29 22:48:39 -07:00
IF (( OpenCV_VERSION_MAJOR LESS 4 AND OPENCV_ARUCO_FOUND ) OR
( OpenCV_VERSION_MAJOR GREATER 4 AND OPENCV_OBJDETECT_FOUND ))
2026-05-26 17:43:34 -07:00
set ( ARUCO_STR "YES" )
ELSE ()
set ( ARUCO_STR "NO" )
ENDIF ()
2015-06-19 18:12:52 -04:00
IF ( OpenCV_VERSION_MAJOR EQUAL 2 )
IF ( OPENCV_NONFREE_FOUND )
2026-05-26 17:43:34 -07:00
MESSAGE ( STATUS " *With OpenCV 2 nonfree module (SIFT/SURF) = YES, aruco = ${ARUCO_STR} (License: Non commercial)" )
2015-06-19 18:12:52 -04:00
ELSE ()
2026-05-26 17:43:34 -07:00
MESSAGE ( STATUS " *With OpenCV 2 nonfree module (SIFT/SURF) = NO, aruco = ${ARUCO_STR} (not found, License: BSD)" )
2015-06-19 18:12:52 -04:00
ENDIF ()
ELSE ()
2020-05-25 17:29:22 -04:00
IF ( OPENCV_XFEATURES2D_FOUND )
IF ( NONFREE STREQUAL "//" )
2021-02-21 13:03:19 -05:00
IF (( OpenCV_VERSION_MAJOR LESS 4 ) OR (( OpenCV_VERSION_MAJOR EQUAL 4 ) AND ( OpenCV_VERSION_MINOR LESS 5 )))
2026-05-26 17:43:34 -07:00
MESSAGE ( STATUS " *With OpenCV ${OpenCV_VERSION} xfeatures2d = YES, nonfree = NO, aruco = ${ARUCO_STR} (License: BSD)" )
2021-02-21 13:03:19 -05:00
ELSE ()
2026-05-26 17:43:34 -07:00
MESSAGE ( STATUS " *With OpenCV ${OpenCV_VERSION} xfeatures2d = YES, nonfree = NO, aruco = ${ARUCO_STR} (License: Apache 2)" )
2021-02-21 13:03:19 -05:00
ENDIF ()
2020-05-09 21:13:41 -04:00
ELSE ()
2026-05-26 17:43:34 -07:00
MESSAGE ( STATUS " *With OpenCV ${OpenCV_VERSION} xfeatures2d = YES, nonfree = YES, aruco = ${ARUCO_STR} (License: Non commercial)" )
2020-05-09 21:13:41 -04:00
ENDIF ()
2015-06-19 18:12:52 -04:00
ELSE ()
2021-02-21 13:03:19 -05:00
IF (( OpenCV_VERSION_MAJOR LESS 4 ) OR (( OpenCV_VERSION_MAJOR EQUAL 4 ) AND ( OpenCV_VERSION_MINOR LESS 5 )))
2026-05-26 17:43:34 -07:00
MESSAGE ( STATUS " *With OpenCV ${OpenCV_VERSION} xfeatures2d = NO, nonfree = NO, aruco = ${ARUCO_STR} (License: BSD)" )
2021-02-21 13:03:19 -05:00
ELSE ()
2026-05-26 17:43:34 -07:00
MESSAGE ( STATUS " *With OpenCV ${OpenCV_VERSION} xfeatures2d = NO, nonfree = NO, aruco = ${ARUCO_STR} (License: Apache 2)" )
2021-02-21 13:03:19 -05:00
ENDIF ()
2015-06-19 18:12:52 -04:00
ENDIF ()
ENDIF ()
ENDIF ( OpenCV_FOUND )
2014-11-21 23:37:23 +00:00
2024-06-15 14:21:51 -07:00
IF ( WITH_QT AND QT4_FOUND )
2019-08-17 03:55:04 -04:00
MESSAGE ( STATUS " With Qt4 = YES (License: Open Source or Commercial)" )
MESSAGE ( STATUS " With VTK ${VTK_MAJOR_VERSION}.${VTK_MINOR_VERSION} = YES (License: BSD)" )
2024-06-15 14:21:51 -07:00
ELSEIF ( WITH_QT AND Qt5_FOUND )
2020-05-27 16:35:33 -04:00
MESSAGE ( STATUS " With Qt ${Qt5_VERSION} = YES (License: Open Source or Commercial)" )
2019-08-17 03:55:04 -04:00
MESSAGE ( STATUS " With VTK ${VTK_MAJOR_VERSION}.${VTK_MINOR_VERSION} = YES (License: BSD)" )
2024-06-15 14:21:51 -07:00
ELSEIF ( WITH_QT AND Qt6_FOUND )
2023-03-05 16:34:56 -08:00
MESSAGE ( STATUS " With Qt ${Qt6_VERSION} = YES (License: Open Source or Commercial)" )
MESSAGE ( STATUS " With VTK ${VTK_MAJOR_VERSION}.${VTK_MINOR_VERSION} = YES (License: BSD)" )
2019-08-17 03:55:04 -04:00
ELSEIF ( NOT WITH_QT )
MESSAGE ( STATUS " With Qt = NO (WITH_QT=OFF)" )
2019-08-14 12:09:56 -04:00
ELSE ()
2019-08-17 03:55:04 -04:00
MESSAGE ( STATUS " With Qt = NO (Qt not found)" )
2019-08-14 12:09:56 -04:00
ENDIF ()
2024-03-23 14:32:18 -07:00
IF ( SQLite3_FOUND )
2018-09-05 15:03:50 -04:00
MESSAGE ( STATUS " With external SQLite3 = YES (License: Public Domain)" )
2018-09-05 14:22:34 -04:00
ELSE ()
2024-03-23 14:32:18 -07:00
MESSAGE ( STATUS " With external SQLite3 = NO (SQLite3 not found, internal version is used for convenience)" )
2018-09-05 14:22:34 -04:00
ENDIF ()
2019-04-18 19:50:58 -04:00
IF ( WITH_ORB_OCTREE )
MESSAGE ( STATUS " With ORB OcTree = YES (License: GPLv3)" )
ELSE ()
MESSAGE ( STATUS " With ORB OcTree = NO (WITH_ORB_OCTREE=OFF)" )
ENDIF ()
2020-04-16 17:59:45 -04:00
IF ( TORCH_FOUND )
2025-11-07 17:22:35 -08:00
MESSAGE ( STATUS " With SuperPoint = YES (License: GPLv3) libtorch=${Torch_VERSION}" )
2021-01-17 01:56:27 -05:00
ELSEIF ( NOT WITH_TORCH )
2025-11-07 17:22:35 -08:00
MESSAGE ( STATUS " With SuperPoint = NO (WITH_TORCH=OFF)" )
2020-04-16 17:59:45 -04:00
ELSE ()
2025-11-07 17:22:35 -08:00
MESSAGE ( STATUS " With SuperPoint = NO (libtorch not found)" )
2020-05-09 21:13:41 -04:00
ENDIF ()
2025-11-07 17:22:35 -08:00
IF ( TORCH_FOUND AND WITH_PYTHON AND Python3_FOUND )
MESSAGE ( STATUS " With Superpoint Rpautrat = YES (Liscense: MIT) libtorch=${Torch_VERSION}" )
ELSEIF ( NOT WITH_TORCH )
MESSAGE ( STATUS " With Superpoint Rpautrat = NO (WITH_TORCH=OFF)" )
ELSEIF ( NOT WITH_PYTHON )
MESSAGE ( STATUS " With Superpoint Rpautrat = NO (WITH_PYTHON=OFF)" )
ELSE ()
MESSAGE ( STATUS " Wtih Superpoint Rpautrat = NO (libtorch and/or python3 not found)" )
ENDIF ()
2021-11-15 18:00:17 -05:00
IF ( WITH_PYTHON AND Python3_FOUND )
2025-11-07 17:22:35 -08:00
MESSAGE ( STATUS " With Python${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR} = YES (License: PSF)" )
2021-01-17 01:56:27 -05:00
ELSEIF ( NOT WITH_PYTHON )
MESSAGE ( STATUS " With Python3 = NO (WITH_PYTHON=OFF)" )
2020-05-09 21:13:41 -04:00
ELSE ()
2021-01-17 01:56:27 -05:00
MESSAGE ( STATUS " With Python3 = NO (python not found)" )
2020-04-16 17:59:45 -04:00
ENDIF ()
2019-05-07 18:57:53 -04:00
IF ( WITH_MADGWICK )
MESSAGE ( STATUS " With Madgwick = YES (License: GPL)" )
ELSE ()
MESSAGE ( STATUS " With Madgwick = NO (WITH_MADGWICK=OFF)" )
ENDIF ()
2019-08-17 03:55:04 -04:00
IF ( FastCV_FOUND )
MESSAGE ( STATUS " With FastCV = YES (License: Apache v2)" )
ELSEIF ( NOT WITH_FASTCV )
MESSAGE ( STATUS " With FastCV = NO (WITH_FASTCV=OFF)" )
ELSE ()
MESSAGE ( STATUS " With FastCV = NO (FastCV not found)" )
ENDIF ()
2026-05-26 17:43:34 -07:00
IF ( apriltag_FOUND )
MESSAGE ( STATUS " With AprilTag ${apriltag_VERSION} = YES (aruco=${WITH_APRILTAG_ARUCO}) (License: BSD 2-Clause License)" )
ELSEIF ( NOT WITH_APRILTAG )
MESSAGE ( STATUS " With AprilTag = NO (WITH_APRILTAG=OFF)" )
ELSE ()
MESSAGE ( STATUS " With AprilTag = NO (apriltag not found)" )
ENDIF ()
2021-01-14 15:49:18 -05:00
IF ( PDAL_FOUND )
2023-02-03 17:25:38 -08:00
MESSAGE ( STATUS " With PDAL ${PDAL_VERSION} = YES (License: BSD)" )
2021-01-14 15:49:18 -05:00
ELSEIF ( NOT WITH_PDAL )
MESSAGE ( STATUS " With PDAL = NO (WITH_PDAL=OFF)" )
ELSE ()
MESSAGE ( STATUS " With PDAL = NO (PDAL not found)" )
ENDIF ()
2024-10-06 17:16:22 -07:00
IF ( libLAS_FOUND )
MESSAGE ( STATUS " With libLAS ${libLAS_VERSION} = YES (License: BSD)" )
ELSEIF ( NOT WITH_LIBLAS )
MESSAGE ( STATUS " With libLAS = NO (WITH_LIBLAS=OFF)" )
ELSE ()
MESSAGE ( STATUS " With libLAS = NO (libLAS not found)" )
ENDIF ()
2024-09-13 14:22:54 -07:00
IF ( CudaSift_FOUND )
MESSAGE ( STATUS " With CudaSift = YES (License: MIT)" )
ELSEIF ( NOT WITH_CUDASIFT )
MESSAGE ( STATUS " With CudaSift = NO (WITH_CUDASIFT=OFF)" )
ELSE ()
MESSAGE ( STATUS " With CudaSift = NO (CudaSift not found, use https://github.com/matlabbe/CudaSift fork)" )
ENDIF ()
2019-08-17 03:55:04 -04:00
MESSAGE ( STATUS "" )
MESSAGE ( STATUS " Solvers:" )
IF ( WITH_TORO )
MESSAGE ( STATUS " With TORO = YES (License: Creative Commons [Attribution-NonCommercial-ShareAlike])" )
ELSE ()
MESSAGE ( STATUS " With TORO = NO (WITH_TORO=OFF)" )
ENDIF ()
IF ( G2O_FOUND )
2023-02-03 17:25:38 -08:00
MESSAGE ( STATUS " *With g2o ${g2o_VERSION} = YES (License: BSD)" )
2019-08-17 03:55:04 -04:00
ELSEIF ( NOT WITH_G2O )
MESSAGE ( STATUS " *With g2o = NO (WITH_G2O=OFF)" )
ELSE ()
MESSAGE ( STATUS " *With g2o = NO (g2o not found)" )
ENDIF ()
IF ( GTSAM_FOUND )
2023-02-03 17:25:38 -08:00
MESSAGE ( STATUS " *With GTSAM ${GTSAM_VERSION} = YES (License: BSD)" )
2019-08-17 03:55:04 -04:00
ELSEIF ( NOT WITH_GTSAM )
MESSAGE ( STATUS " *With GTSAM = NO (WITH_GTSAM=OFF)" )
ELSE ()
MESSAGE ( STATUS " *With GTSAM = NO (GTSAM not found)" )
ENDIF ()
2024-03-16 17:10:34 -07:00
IF ( WITH_CERES AND CERES_FOUND )
2023-02-03 17:25:38 -08:00
MESSAGE ( STATUS " *With Ceres ${Ceres_VERSION} = YES (License: BSD)" )
2019-08-17 03:55:04 -04:00
ELSEIF ( NOT WITH_CERES )
2021-11-13 19:45:57 -05:00
MESSAGE ( STATUS " *With Ceres = NO (WITH_CERES=OFF)" )
2019-08-17 03:55:04 -04:00
ELSE ()
2021-11-13 19:45:57 -05:00
MESSAGE ( STATUS " *With Ceres = NO (Ceres not found)" )
2019-08-17 03:55:04 -04:00
ENDIF ()
2023-02-03 17:25:38 -08:00
IF ( MRPT_FOUND )
MESSAGE ( STATUS " With MRPT ${MRPT_VERSION} = YES (License: BSD)" )
ELSEIF ( NOT WITH_MRPT )
MESSAGE ( STATUS " With MRPT = NO (WITH_MRPT=OFF)" )
ELSE ()
MESSAGE ( STATUS " With MRPT = NO (MRPT not found)" )
ENDIF ()
2019-08-17 03:55:04 -04:00
IF ( G2O_FOUND OR GTSAM_FOUND )
IF ( WITH_VERTIGO )
MESSAGE ( STATUS " With VERTIGO = YES (License: GPLv3)" )
ELSE ()
MESSAGE ( STATUS " With VERTIGO = NO (WITH_VERTIGO=OFF)" )
ENDIF ()
ELSE ()
MESSAGE ( STATUS " With VERTIGO = NO (GTSAM or g2o required)" )
ENDIF ()
IF ( cvsba_FOUND )
MESSAGE ( STATUS " With cvsba = YES (License: GPLv2)" )
ELSEIF ( NOT WITH_CVSBA )
MESSAGE ( STATUS " With cvsba = NO (WITH_CVSBA=OFF)" )
ELSE ()
MESSAGE ( STATUS " With cvsba = NO (cvsba not found)" )
ENDIF ()
IF ( libpointmatcher_FOUND )
2023-02-03 17:25:38 -08:00
MESSAGE ( STATUS " *With libpointmatcher ${libpointmatcher_VERSION} = YES (License: BSD)" )
2019-08-17 03:55:04 -04:00
ELSEIF ( NOT WITH_POINTMATCHER )
MESSAGE ( STATUS " *With libpointmatcher = NO (WITH_POINTMATCHER=OFF)" )
ELSE ()
MESSAGE ( STATUS " *With libpointmatcher = NO (libpointmatcher not found)" )
2021-03-27 15:11:20 -04:00
ENDIF ()
IF ( CCCoreLib_FOUND )
2021-04-02 19:06:03 -04:00
MESSAGE ( STATUS " With CCCoreLib = YES (License: GPLv2)" )
2021-08-26 15:34:48 -04:00
ELSEIF ( NOT WITH_CCCORELIB )
2021-04-02 19:06:03 -04:00
MESSAGE ( STATUS " With CCCoreLib = NO (WITH_CCCORELIB=OFF)" )
2021-03-27 15:11:20 -04:00
ELSE ()
2021-04-02 19:06:03 -04:00
MESSAGE ( STATUS " With CCCoreLib = NO (CCCoreLib not found)" )
2019-08-17 03:55:04 -04:00
ENDIF ()
2021-11-13 19:45:57 -05:00
IF ( Open3D_FOUND )
MESSAGE ( STATUS " With Open3D = YES (License: MIT)" )
ELSEIF ( NOT WITH_OPEN3D )
MESSAGE ( STATUS " With Open3D = NO (WITH_OPEN3D=OFF)" )
ELSEIF ( ${ CMAKE_VERSION } VERSION_LESS "3.19.0" )
MESSAGE ( STATUS " With Open3D = NO (Open3D requires CMake>=3.19)" )
ELSE ()
MESSAGE ( STATUS " With Open3D = NO (Open3D not found)" )
ENDIF ()
2023-11-19 01:05:52 -08:00
IF ( opengv_FOUND AND WITH_OPENGV )
2026-03-15 14:57:27 -07:00
IF ( opengv_VERSION STREQUAL "internal" )
MESSAGE ( STATUS " With OpenGV (internal) = YES (License: BSD)" )
ELSE ()
2023-02-03 17:25:38 -08:00
MESSAGE ( STATUS " With OpenGV ${opengv_VERSION} = YES (License: BSD)" )
2026-03-15 14:57:27 -07:00
ENDIF ()
2022-07-20 15:20:14 -04:00
ELSEIF ( NOT WITH_OPENGV )
MESSAGE ( STATUS " With OpenGV = NO (WITH_OPENGV=OFF)" )
ELSE ()
MESSAGE ( STATUS " With OpenGV = NO (OpenGV not found)" )
ENDIF ()
2019-08-17 03:55:04 -04:00
MESSAGE ( STATUS "" )
MESSAGE ( STATUS " Reconstruction Approaches:" )
2020-04-18 16:03:09 -04:00
IF ( octomap_FOUND )
2023-12-17 22:44:11 -08:00
MESSAGE ( STATUS " With OctoMap ${octomap_VERSION} = YES (License: BSD)" )
2019-08-17 03:55:04 -04:00
ELSEIF ( NOT WITH_OCTOMAP )
2023-12-17 22:44:11 -08:00
MESSAGE ( STATUS " With OctoMap = NO (WITH_OCTOMAP=OFF)" )
2019-08-17 03:55:04 -04:00
ELSE ()
2023-12-17 22:44:11 -08:00
MESSAGE ( STATUS " With OctoMap = NO (octomap not found)" )
ENDIF ()
IF ( grid_map_core_FOUND )
MESSAGE ( STATUS " With GridMap ${grid_map_core_VERSION} = YES (License: BSD)" )
2025-10-07 10:22:16 -07:00
ELSEIF ( NOT WITH_GRIDMAP )
2023-12-17 22:44:11 -08:00
MESSAGE ( STATUS " With GridMap = NO (WITH_GRIDMAP=OFF)" )
ELSE ()
2023-12-18 10:29:58 -08:00
MESSAGE ( STATUS " With GridMap = NO (grid_map_core not found)" )
2019-08-17 03:55:04 -04:00
ENDIF ()
IF ( CPUTSDF_FOUND )
MESSAGE ( STATUS " With CPUTSDF = YES (License: BSD)" )
ELSEIF ( NOT WITH_CPUTSDF )
MESSAGE ( STATUS " With CPUTSDF = NO (WITH_CPUTSDF=OFF)" )
ELSE ()
MESSAGE ( STATUS " With CPUTSDF = NO (CPUTSDF not found)" )
ENDIF ()
IF ( open_chisel_FOUND )
MESSAGE ( STATUS " With OpenChisel = YES (License: ???)" )
ELSEIF ( NOT WITH_OPENCHISEL )
MESSAGE ( STATUS " With OpenChisel = NO (WITH_OPENCHISEL=OFF)" )
ELSE ()
MESSAGE ( STATUS " With OpenChisel = NO (open_chisel not found)" )
ENDIF ()
2019-10-24 08:56:23 -04:00
IF ( AliceVision_FOUND )
2020-11-20 13:42:56 -05:00
MESSAGE ( STATUS " With AliceVision ${AliceVision_VERSION} = YES (License: MPLv2)" )
2019-10-24 08:56:23 -04:00
ELSEIF ( NOT WITH_ALICE_VISION )
MESSAGE ( STATUS " With AliceVision = NO (WITH_ALICE_VISION=OFF)" )
ELSE ()
MESSAGE ( STATUS " With AliceVision = NO (AliceVision not found)" )
ENDIF ()
2019-08-17 03:55:04 -04:00
MESSAGE ( STATUS "" )
MESSAGE ( STATUS " Camera Drivers:" )
2014-06-04 20:24:54 +00:00
IF ( Freenect_FOUND )
2016-03-01 14:25:00 -05:00
MESSAGE ( STATUS " With Freenect = YES (License: Apache v2 and/or GPLv2)" )
2015-08-13 15:12:43 -04:00
ELSEIF ( NOT WITH_FREENECT )
MESSAGE ( STATUS " With Freenect = NO (WITH_FREENECT=OFF)" )
2014-06-04 20:24:54 +00:00
ELSE ()
2015-07-28 23:48:50 -04:00
MESSAGE ( STATUS " With Freenect = NO (libfreenect not found)" )
2014-06-04 20:24:54 +00:00
ENDIF ()
2014-06-13 23:44:38 +00:00
2024-06-15 23:12:07 +02:00
IF ( WITH_OPENNI AND OpenNI_FOUND )
MESSAGE ( STATUS " With OpenNI = YES (License: Apache v2)" )
ELSEIF ( NOT WITH_OPENNI )
MESSAGE ( STATUS " With OpenNI = NO (WITH_OPENNI=OFF)" )
ELSE ()
MESSAGE ( STATUS " With OpenNI = NO (OpenNI not found)" )
ENDIF ()
2014-06-13 23:44:38 +00:00
IF ( OpenNI2_FOUND )
2016-03-01 14:25:00 -05:00
MESSAGE ( STATUS " With OpenNI2 = YES (License: Apache v2)" )
2015-08-13 15:12:43 -04:00
ELSEIF ( NOT WITH_OPENNI2 )
MESSAGE ( STATUS " With OpenNI2 = NO (WITH_OPENNI2=OFF)" )
2014-06-13 23:44:38 +00:00
ELSE ()
2015-07-28 23:48:50 -04:00
MESSAGE ( STATUS " With OpenNI2 = NO (OpenNI2 not found)" )
2014-06-13 23:44:38 +00:00
ENDIF ()
2015-04-02 16:33:35 -04:00
IF ( freenect2_FOUND )
2016-03-01 14:25:00 -05:00
MESSAGE ( STATUS " With Freenect2 = YES (License: Apache v2 and/or GPLv2)" )
2015-08-13 15:12:43 -04:00
ELSEIF ( NOT WITH_FREENECT2 )
MESSAGE ( STATUS " With Freenect2 = NO (WITH_FREENECT2=OFF)" )
2015-04-02 16:33:35 -04:00
ELSE ()
2015-07-28 23:48:50 -04:00
MESSAGE ( STATUS " With Freenect2 = NO (libfreenect2 not found)" )
2015-04-02 16:33:35 -04:00
ENDIF ()
2017-11-06 00:19:12 -05:00
IF ( KinectSDK2_FOUND )
MESSAGE ( STATUS " With Kinect for Windows 2 = YES (License: Apache v2 and/or GPLv2)" )
ELSEIF ( NOT WITH_K4W2 )
MESSAGE ( STATUS " With Kinect for Windows 2 = NO (WITH_K4W2=OFF)" )
ELSE ()
MESSAGE ( STATUS " With Kinect for Windows 2 = NO (Kinect for Windows 2 SDK not found)" )
ENDIF ()
2019-07-10 12:34:13 -04:00
IF ( k4a_FOUND )
2019-07-09 20:48:09 -04:00
MESSAGE ( STATUS " With Kinect for Azure = YES (License: MIT)" )
ELSEIF ( NOT WITH_K4A )
MESSAGE ( STATUS " With Kinect for Azure = NO (WITH_K4A=OFF)" )
ELSE ()
MESSAGE ( STATUS " With Kinect for Azure = NO (Kinect for Azure SDK not found)" )
ENDIF ()
2015-04-03 15:13:05 -04:00
IF ( DC1394_FOUND )
2016-03-01 14:25:00 -05:00
MESSAGE ( STATUS " With dc1394 = YES (License: LGPL)" )
2015-08-13 15:12:43 -04:00
ELSEIF ( NOT WITH_DC1394 )
MESSAGE ( STATUS " With dc1394 = NO (WITH_DC1394=OFF)" )
2015-04-03 15:13:05 -04:00
ELSE ()
2015-07-28 23:48:50 -04:00
MESSAGE ( STATUS " With dc1394 = NO (dc1394 not found)" )
2015-04-03 15:13:05 -04:00
ENDIF ()
2015-04-07 12:00:10 -04:00
IF ( FlyCapture2_FOUND )
2015-07-28 23:48:50 -04:00
MESSAGE ( STATUS " With FlyCapture2/Triclops = YES" )
2015-08-13 15:12:43 -04:00
ELSEIF ( NOT WITH_FLYCAPTURE2 )
MESSAGE ( STATUS " With FlyCapture2/Triclops = NO (WITH_FLYCAPTURE2=OFF)" )
2015-04-07 12:00:10 -04:00
ELSE ()
2015-07-28 23:48:50 -04:00
MESSAGE ( STATUS " With FlyCapture2/Triclops = NO (Point Grey SDK not found)" )
2015-04-07 12:00:10 -04:00
ENDIF ()
2026-03-15 14:57:27 -07:00
IF ( ZED_FOUND )
2020-04-16 17:59:45 -04:00
MESSAGE ( STATUS " With ZED = YES" )
2016-05-31 19:09:49 -04:00
ELSEIF ( NOT WITH_ZED )
MESSAGE ( STATUS " With ZED = NO (WITH_ZED=OFF)" )
ELSE ()
2020-04-16 17:59:45 -04:00
MESSAGE ( STATUS " With ZED = NO (ZED sdk and/or cuda not found)" )
2016-05-31 19:09:49 -04:00
ENDIF ()
2021-02-28 10:31:18 -05:00
IF ( ZEDOC_FOUND )
MESSAGE ( STATUS " With ZEDOC = YES" )
ELSEIF ( NOT WITH_ZEDOC )
MESSAGE ( STATUS " With ZEDOC = NO (WITH_ZEDOC=OFF)" )
ELSE ()
MESSAGE ( STATUS " With ZEDOC = NO (ZED Open Capture not found)" )
ENDIF ()
2016-07-26 18:39:34 -04:00
IF ( RealSense_FOUND )
MESSAGE ( STATUS " With RealSense = YES (License: Apache-2)" )
2017-04-21 21:24:23 -04:00
IF ( RealSenseSlam_FOUND )
MESSAGE ( STATUS " With RealSenseSlam = YES" )
2017-05-05 16:10:09 -04:00
ELSEIF ( NOT WITH_REALSENSE )
2017-04-21 21:24:23 -04:00
MESSAGE ( STATUS " With RealSenseSlam = NO (librealsense_slam not found)" )
2017-05-05 16:10:09 -04:00
ELSE ()
MESSAGE ( STATUS " With RealSenseSlam = NO (WITH_REALSENSE_SLAM=OFF)" )
2017-04-21 21:24:23 -04:00
ENDIF ()
2016-07-26 18:39:34 -04:00
ELSEIF ( NOT WITH_REALSENSE )
MESSAGE ( STATUS " With RealSense = NO (WITH_REALSENSE=OFF)" )
ELSE ()
MESSAGE ( STATUS " With RealSense = NO (librealsense not found)" )
ENDIF ()
2018-06-15 12:24:00 -04:00
IF ( realsense2_FOUND )
2023-02-12 16:18:01 -08:00
IF ( WIN32 )
MESSAGE ( STATUS " With RealSense2 = YES (License: Apache-2)" )
ELSE ()
2023-02-03 17:25:38 -08:00
MESSAGE ( STATUS " With RealSense2 ${realsense2_VERSION} = YES (License: Apache-2)" )
2023-02-12 16:18:01 -08:00
ENDIF ()
2018-06-15 12:24:00 -04:00
ELSEIF ( NOT WITH_REALSENSE2 )
MESSAGE ( STATUS " With RealSense2 = NO (WITH_REALSENSE2=OFF)" )
ELSE ()
MESSAGE ( STATUS " With RealSense2 = NO (librealsense2 not found)" )
ENDIF ()
2020-04-30 00:57:47 -04:00
IF ( mynteye_FOUND )
MESSAGE ( STATUS " With MyntEyeS = YES (License: Apache-2)" )
ELSEIF ( NOT WITH_MYNTEYE )
MESSAGE ( STATUS " With MyntEyeS = NO (WITH_MYNTEYE=OFF)" )
ELSE ()
MESSAGE ( STATUS " With MyntEyeS = NO (mynteye s sdk not found)" )
ENDIF ()
2021-03-07 12:27:21 -05:00
IF ( depthai_FOUND )
2023-02-03 17:25:38 -08:00
MESSAGE ( STATUS " With DepthAI ${depthai_VERSION} = YES (License: MIT)" )
2021-03-07 12:27:21 -05:00
ELSEIF ( NOT WITH_DEPTHAI )
MESSAGE ( STATUS " With DepthAI = NO (WITH_DEPTHAI=OFF)" )
ELSE ()
2026-07-01 18:11:28 -07:00
MESSAGE ( STATUS " With DepthAI = NO (depthai-core v2 not found)" )
2021-03-07 12:27:21 -05:00
ENDIF ()
2024-05-23 17:02:38 +08:00
IF ( xvsdk_FOUND )
MESSAGE ( STATUS " With XVisio SDK ${xvsdk_VERSION} = YES" )
ELSEIF ( NOT WITH_XVSDK )
MESSAGE ( STATUS " With XVisio SDK = NO (WITH_XVSDK=OFF)" )
ELSE ()
MESSAGE ( STATUS " With XVisio SDK = NO (xvsdk not found)" )
ENDIF ()
2025-10-07 10:22:16 -07:00
IF ( OrbbecSDK_FOUND )
MESSAGE ( STATUS " With Orbbec SDK ${OrbbecSDK_VERSION} = YES (License: MIT)" )
ELSEIF ( NOT WITH_ORBBEC_SDK )
MESSAGE ( STATUS " With Orbbec SDK = NO (WITH_ORBBEC_SDK=OFF)" )
ELSE ()
MESSAGE ( STATUS " With Orbbec SDK = NO (OrbbecSDK v2 not found)" )
ENDIF ()
2019-08-17 03:55:04 -04:00
MESSAGE ( STATUS "" )
MESSAGE ( STATUS " Odometry Approaches:" )
IF ( loam_velodyne_FOUND )
MESSAGE ( STATUS " With loam_velodyne = YES (License: BSD)" )
ELSEIF ( NOT WITH_LOAM )
MESSAGE ( STATUS " With loam_velodyne = NO (WITH_LOAM=OFF)" )
2016-06-28 19:00:44 -04:00
ELSE ()
2019-08-17 03:55:04 -04:00
MESSAGE ( STATUS " With loam_velodyne = NO (loam_velodyne not found)" )
2018-03-26 18:06:41 -04:00
ENDIF ()
2021-09-09 17:38:54 -04:00
IF ( floam_FOUND )
MESSAGE ( STATUS " With floam = YES (License: BSD)" )
ELSEIF ( NOT WITH_FLOAM )
MESSAGE ( STATUS " With floam = NO (WITH_FLOAM=OFF)" )
ELSE ()
MESSAGE ( STATUS " With floam = NO (floam not found)" )
ENDIF ()
2026-04-12 20:06:44 -05:00
IF ( lio_sam_FOUND )
MESSAGE ( STATUS " With lio_sam = YES (License: BSD)" )
ELSEIF ( NOT WITH_LIOSAM )
MESSAGE ( STATUS " With lio_sam = NO (WITH_LIOSAM=OFF)" )
ELSE ()
MESSAGE ( STATUS " With lio_sam = NO (lio_sam not found)" )
ENDIF ()
2021-09-09 17:38:54 -04:00
2017-05-30 09:27:31 -04:00
IF ( libfovis_FOUND )
MESSAGE ( STATUS " With libfovis = YES (License: GPLv2)" )
ELSEIF ( NOT WITH_FOVIS )
MESSAGE ( STATUS " With libfovis = NO (WITH_FOVIS=OFF)" )
ELSE ()
MESSAGE ( STATUS " With libfovis = NO (libfovis not found)" )
ENDIF ()
2017-05-30 14:03:46 -04:00
IF ( libviso2_FOUND )
MESSAGE ( STATUS " With libviso2 = YES (License: GPLv3)" )
ELSEIF ( NOT WITH_VISO2 )
MESSAGE ( STATUS " With libviso2 = NO (WITH_VISO2=OFF)" )
ELSE ()
MESSAGE ( STATUS " With libviso2 = NO (libviso2 not found)" )
ENDIF ()
2017-05-31 20:57:24 -04:00
IF ( dvo_core_FOUND )
MESSAGE ( STATUS " With dvo_core = YES (License: GPLv3)" )
ELSEIF ( NOT WITH_DVO )
MESSAGE ( STATUS " With dvo_core = NO (WITH_DVO=OFF)" )
ELSE ()
MESSAGE ( STATUS " With dvo_core = NO (dvo_core not found)" )
ENDIF ()
2018-03-07 19:43:30 -05:00
IF ( okvis_FOUND )
MESSAGE ( STATUS " With okvis = YES (License: BSD)" )
2018-07-18 16:15:41 -04:00
ELSEIF ( NOT WITH_OKVIS )
2018-03-07 19:43:30 -05:00
MESSAGE ( STATUS " With okvis = NO (WITH_OKVIS=OFF)" )
ELSE ()
MESSAGE ( STATUS " With okvis = NO (okvis not found)" )
ENDIF ()
2018-07-14 20:40:44 -04:00
IF ( msckf_vio_FOUND )
MESSAGE ( STATUS " With msckf_vio = YES (License: Penn Software License)" )
ELSEIF ( NOT WITH_MSCKF_VIO )
MESSAGE ( STATUS " With msckf_vio = NO (WITH_MSCKF_VIO=OFF)" )
ELSE ()
MESSAGE ( STATUS " With msckf_vio = NO (msckf_vio not found)" )
ENDIF ()
2019-03-18 20:45:34 -04:00
IF ( vins_FOUND )
MESSAGE ( STATUS " With VINS-Fusion = YES (License: GPLv3)" )
ELSEIF ( NOT WITH_VINS )
2025-09-14 19:29:28 -07:00
MESSAGE ( STATUS " With VINS-Fusion = NO (WITH_VINS_FUSION=OFF)" )
2019-03-18 20:45:34 -04:00
ELSE ()
MESSAGE ( STATUS " With VINS-Fusion = NO (VINS-Fusion not found)" )
ENDIF ()
2026-06-13 16:20:37 -07:00
IF ( OpenVINS_FOUND )
2021-03-28 23:51:02 -04:00
MESSAGE ( STATUS " With OpenVINS = YES (License: GPLv3)" )
ELSEIF ( NOT WITH_OPENVINS )
MESSAGE ( STATUS " With OpenVINS = NO (WITH_OPENVINS=OFF)" )
ELSE ()
MESSAGE ( STATUS " With OpenVINS = NO (ov_msckf not found)" )
ENDIF ()
2021-03-09 16:00:41 -05:00
IF ( ORB_SLAM_FOUND )
MESSAGE ( STATUS " With ORB_SLAM${ORB_SLAM_VERSION} = YES (License: GPLv3)" )
ELSEIF ( NOT WITH_ORB_SLAM )
MESSAGE ( STATUS " With ORB_SLAM = NO (WITH_ORB_SLAM=OFF)" )
2017-06-05 19:04:23 -04:00
ELSEIF ( G2O_FOUND )
2021-03-09 16:00:41 -05:00
MESSAGE ( STATUS " With ORB_SLAM = NO (WITH_G2O should be OFF as ORB_SLAM uses its own g2o version)" )
2017-06-05 19:04:23 -04:00
ELSE ()
2021-03-09 16:00:41 -05:00
MESSAGE ( STATUS " With ORB_SLAM = NO (ORB_SLAM2 and ORB_SLAM3 not found, make sure environment variable ORB_SLAM_ROOT_DIR is set)" )
2017-06-05 19:04:23 -04:00
ENDIF ()
2025-10-03 11:49:21 -07:00
IF ( CUVSLAM_FOUND )
MESSAGE ( STATUS " With cuVSLAM = YES (License: NVIDIA ISAAC ROS SOFTWARE LICENSE)" )
ELSEIF ( NOT WITH_CUVSLAM )
MESSAGE ( STATUS " With cuVSLAM = NO (WITH_CUVSLAM=OFF)" )
ELSE ()
MESSAGE ( STATUS " With cuVSLAM = NO (cuVSLAM not found, make sure cuVSLAM is installed)" )
ENDIF ()
2020-04-16 17:59:45 -04:00
MESSAGE ( STATUS "Show all options with: cmake -LA | grep WITH_" )
2011-06-05 14:45:39 +00:00
MESSAGE ( STATUS "--------------------------------------------" )
2016-03-01 14:25:00 -05:00
2021-11-15 18:00:17 -05:00
IF ( NOT GTSAM_FOUND AND NOT G2O_FOUND AND NOT WITH_TORO AND NOT WITH_CERES AND NOT CERES_FOUND )
2016-03-01 14:25:00 -05:00
MESSAGE ( SEND_ERROR "No graph optimizer found! You should have at least one of these options:
g2o (https://github.com/RainerKuemmerle/g2o)
GTSAM (https://collab.cc.gatech.edu/borg/gtsam)
2019-08-17 03:55:04 -04:00
Ceres (http://ceres-solver.org)
2016-03-01 14:25:00 -05:00
set -DWITH_TORO=ON" )
2021-11-15 18:00:17 -05:00
ENDIF ( NOT GTSAM_FOUND AND NOT G2O_FOUND AND NOT WITH_TORO AND NOT WITH_CERES AND NOT CERES_FOUND )
2017-05-17 16:59:35 -04:00
# vim: set et ft=cmake fenc=utf-8 ff=unix sts=0 sw=2 ts=2 :