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-05-26 17:43:34 -07:00
SET ( RTABMAP_PATCH_VERSION 7 )
2013-12-11 00:12:44 +00:00
SET ( RTABMAP_VERSION
$ { R T A B M A P _ M A J O R _ V E R S I O N } . $ { R T A B M A P _ M I N O R _ V E R S I O N } . $ { R T A B M A P _ P A T C H _ V E R S I O N } )
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 ( )
IF ( FLANN_KDTREE_MEM_OPT )
ADD_DEFINITIONS ( "-DFLANN_KDTREE_MEM_OPT" )
ENDIF ( FLANN_KDTREE_MEM_OPT )
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 ( )
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 )
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 )
Add LIO-SAM as an odometry strategy (#1684)
* Added liosam odometry integration
* Add kXYZIRT scan format with per-point ring channel for LIO-SAM integration
Introduce PointXYZIRT point type and kXYZIRT LaserScan format (x,y,z,
intensity,ring,time) so that ring indices survive the scan pipeline.
Update OdometryLIOSAM to require kXYZIRT and properly split ring/time
into the parallel buffers LIO-SAM expects. Extend deskewing to preserve
ring data and disable base-class deskew in OdometryLIOSAM since LIO-SAM
handles it internally.
* Address PR review: config file, deferred init, and GUI panel for LIO-SAM
- Add OdomLIOSAM/ConfigPath parameter to load LIO-SAM settings from a
YAML file. When set, individual params are ignored. Extrinsics from
sensor local transforms always override config file values.
- Defer LioSamCore initialization until both IMU and lidar local
transforms are available, computing T_lidar_imu from sensor data.
IMU samples are buffered and replayed after init.
- Fix deferred init for scan-only messages that arrive after IMU
local transform is already cached.
- Add LIO-SAM entry to odometry strategy combo box (index 14) with
full PreferencesDialog panel including config path browse button
and all parameter widgets.
* OdometryLIOSAM: propagate deskewed scan to SensorData
Capture the deskewed cloud produced by LIO-SAM's image projection
stage and replace the raw scan on SensorData with it, so loop closure
registration and other downstream stages operate on the motion-
compensated points instead of the raw pre-deskew input.
* Minor updates for rtabmap_ros
---------
Co-authored-by: matlabbe <matlabbe@gmail.com>
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 )
2021-11-08 13:47:27 -05:00
option ( WITH_DEPTHAI "Include depthai-core 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
2024-09-13 14:22:54 -07:00
FIND_PACKAGE ( OpenCV REQUIRED QUIET COMPONENTS core calib3d imgproc highgui stitching photo video videoio OPTIONAL_COMPONENTS aruco objdetect xfeatures2d nonfree gpu cudafeatures2d cudaoptflow cudaimgproc )
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 )
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
$ { O p e n C L _ L I B R A R I E S }
$ { f r e e n e c t 2 _ L I B R A R I E S }
)
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
P A T H S $ { G 2 O _ I N C L U D E S }
N O _ D E F A U L T _ P A T H )
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
P A T H S $ { G 2 O _ I N C L U D E S }
N O _ D E F A U L T _ P A T H )
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
P A T H S $ { G T S A M _ I N C L U D E _ D I R }
N O _ D E F A U L T _ P A T H )
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 )
Add LIO-SAM as an odometry strategy (#1684)
* Added liosam odometry integration
* Add kXYZIRT scan format with per-point ring channel for LIO-SAM integration
Introduce PointXYZIRT point type and kXYZIRT LaserScan format (x,y,z,
intensity,ring,time) so that ring indices survive the scan pipeline.
Update OdometryLIOSAM to require kXYZIRT and properly split ring/time
into the parallel buffers LIO-SAM expects. Extend deskewing to preserve
ring data and disable base-class deskew in OdometryLIOSAM since LIO-SAM
handles it internally.
* Address PR review: config file, deferred init, and GUI panel for LIO-SAM
- Add OdomLIOSAM/ConfigPath parameter to load LIO-SAM settings from a
YAML file. When set, individual params are ignored. Extrinsics from
sensor local transforms always override config file values.
- Defer LioSamCore initialization until both IMU and lidar local
transforms are available, computing T_lidar_imu from sensor data.
IMU samples are buffered and replayed after init.
- Fix deferred init for scan-only messages that arrive after IMU
local transform is already cached.
- Add LIO-SAM entry to odometry strategy combo box (index 14) with
full PreferencesDialog panel including config path browse button
and all parameter widgets.
* OdometryLIOSAM: propagate deskewed scan to SensorData
Capture the deskewed cloud produced by LIO-SAM's image projection
stage and replace the raw scan on SensorData with it, so loop closure
registration and other downstream stages operate on the motion-
compensated points instead of the raw pre-deskew input.
* Minor updates for rtabmap_ros
---------
Co-authored-by: matlabbe <matlabbe@gmail.com>
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 )
2025-10-12 10:35:30 -07:00
FIND_PACKAGE ( depthai 2.24 )
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 (
o p e n g v
G I T _ R E P O S I T O R Y h t t p s : / / g i t h u b . c o m / l a u r e n t k n e i p / o p e n g v . g i t
G I T _ T A G 9 1 f 4 b 1 9 c 7 3 4 5 0 8 3 3 a 4 0 e 4 6 3 a d 3 6 4 8 a a e 8 0 b 3 a 7 f 3
P A T C H _ C O M M A N D $ { C M A K E _ C O M M A N D }
- D P A T C H _ F I L E = $ { C M A K E _ C U R R E N T _ L I S T _ D I R } / p a t c h e s / o p e n g v _ 9 1 f 4 b 1 9 c . p a t c h
- P $ { C M A K E _ C U R R E N T _ L I S T _ D I R } / p a t c h e s / a p p l y _ p a t c h . c m a k e
)
set ( BUILD_SHARED_LIBS OFF )
set ( BUILD_TESTS OFF )
set ( CMAKE_BUILD_TYPE Release )
set ( CMAKE_POLICY_DEFAULT_CMP0077 NEW )
# 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 ( )
ENDIF ( )
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 ( )
2023-03-05 16:34:56 -08:00
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
" $ { C M A K E _ I N S T A L L _ P R E F I X } $ { C M A K E _ B U N D L E _ N A M E } . a p p / C o n t e n t s " )
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
P A T H S $ { O p e n C V _ I N C L U D E _ D I R S }
N O _ D E F A U L T _ P A T H )
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 )
Add LIO-SAM as an odometry strategy (#1684)
* Added liosam odometry integration
* Add kXYZIRT scan format with per-point ring channel for LIO-SAM integration
Introduce PointXYZIRT point type and kXYZIRT LaserScan format (x,y,z,
intensity,ring,time) so that ring indices survive the scan pipeline.
Update OdometryLIOSAM to require kXYZIRT and properly split ring/time
into the parallel buffers LIO-SAM expects. Extend deskewing to preserve
ring data and disable base-class deskew in OdometryLIOSAM since LIO-SAM
handles it internally.
* Address PR review: config file, deferred init, and GUI panel for LIO-SAM
- Add OdomLIOSAM/ConfigPath parameter to load LIO-SAM settings from a
YAML file. When set, individual params are ignored. Extrinsics from
sensor local transforms always override config file values.
- Defer LioSamCore initialization until both IMU and lidar local
transforms are available, computing T_lidar_imu from sensor data.
IMU samples are buffered and replayed after init.
- Fix deferred init for scan-only messages that arrive after IMU
local transform is already cached.
- Add LIO-SAM entry to odometry strategy combo box (index 14) with
full PreferencesDialog panel including config path browse button
and all parameter widgets.
* OdometryLIOSAM: propagate deskewed scan to SensorData
Capture the deskewed cloud produced by LIO-SAM's image projection
stage and replace the raw scan on SensorData with it, so loop closure
registration and other downstream stages operate on the motion-
compensated points instead of the raw pre-deskew input.
* Minor updates for rtabmap_ros
---------
Co-authored-by: matlabbe <matlabbe@gmail.com>
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 )
ELSE ( )
SET ( CONF_WITH_K4A 1 )
IF ( WIN32 )
install (
F I L E S
" $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / c m a k e _ m o d u l e s / F i n d K 4 A . c m a k e "
D E S T I N A T I O N $ { I N S T A L L _ C M A K E _ D I R } / M o d u l e s / .
C O M P O N E N T d e v e l
)
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 )
ELSE ( )
SET ( CONF_WITH_REALSENSE2 1 )
IF ( WIN32 )
install (
F I L E S
" $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / c m a k e _ m o d u l e s / F i n d R e a l S e n s e 2 . c m a k e "
D E S T I N A T I O N $ { I N S T A L L _ C M A K E _ D I R } / M o d u l e s / .
C O M P O N E N T d e v e l
)
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 )
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 (
" $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / c m a k e _ u n i n s t a l l . c m a k e . i n "
" $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / c m a k e _ u n i n s t a l l . c m a k e "
I M M E D I A T E @ O N L Y )
ADD_CUSTOM_TARGET ( uninstall
" $ { C M A K E _ C O M M A N D } " - P " $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / c m a k e _ u n i n s t a l l . c m a k e " )
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
F I L E " $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / $ { P R O J E C T _ N A M E } T a r g e t s . c m a k e "
2023-02-22 23:07:30 -08:00
N A M E S P A C E r t a b m a p : :
2023-02-12 16:18:01 -08:00
)
install ( EXPORT rtabmapTargets
F I L E
$ { P R O J E C T _ N A M E } T a r g e t s . c m a k e
D E S T I N A T I O N
$ { I N S T A L L _ C M A K E _ D I R }
2023-02-22 23:07:30 -08:00
N A M E S P A C E r t a b m a p : :
2023-02-12 16:18:01 -08:00
C O M P O N E N T
d e v e l
)
####
# Setup RTABMapConfig.cmake
####
include ( CMakePackageConfigHelpers )
write_basic_package_version_file (
" $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / $ { P R O J E C T _ N A M E } C o n f i g V e r s i o n . c m a k e "
V E R S I O N $ { P R O J E C T _ V E R S I O N }
C O M P A T I B I L I T Y A n y N e w e r V e r s i o n
)
# Build tree:
SET ( CONF_MODULES_DIR "../cmake_modules" )
configure_file (
$ { P R O J E C T _ N A M E } C o n f i g . c m a k e . i n
" $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / $ { P R O J E C T _ N A M E } C o n f i g . c m a k e "
@ O N L Y
)
# Install tree:
SET ( CONF_MODULES_DIR "Modules" )
configure_file (
$ { P R O J E C T _ N A M E } C o n f i g . c m a k e . i n
" $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } $ { C M A K E _ F I L E S _ D I R E C T O R Y } / $ { P R O J E C T _ N A M E } C o n f i g . c m a k e "
@ O N L Y
)
install (
F I L E S
" $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } $ { C M A K E _ F I L E S _ D I R E C T O R Y } / $ { P R O J E C T _ N A M E } C o n f i g . c m a k e "
" $ { C M A K E _ C U R R E N T _ B I N A R Y _ D I R } / $ { P R O J E C T _ N A M E } C o n f i g V e r s i o n . c m a k e "
D E S T I N A T I O N
$ { I N S T A L L _ C M A K E _ D I R }
C O M P O N E N T
d e v e l
)
2013-12-13 00:51:48 +00:00
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 "
E x e c W a i t ' \ \ \ " $ I N S T D I R \ \ \ \ v c _ r e d i s t . x 6 4 . e x e \ \ \ " / q u i e t / n o r e s t a r t '
" )
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
" \ \ \ \ . s v n / "
2014-06-11 16:10:58 +00:00
" \ \ \ \ . s e t t i n g s / "
2011-06-05 14:45:39 +00:00
" $ { P R O J E C T _ S O U R C E _ D I R } / b u i l d / [ a - z A - Z 0 - 9 _ ] + "
" ~ $ "
" $ { P R O J E C T _ S O U R C E _ D I R } / b i n / . * $ { P R O J E C T _ P R E F I X } "
" $ { P R O J E C T _ S O U R C E _ D I R } / b i n / . * $ { P R O J E C T _ N A M E } "
" $ { P R O J E C T _ S O U R C E _ D I R } / b i n / . * [ t T ] e s t "
" $ { P R O J E C T _ S O U R C E _ D I R } / b i n / . * [ e E ] x a m p l e "
2013-12-11 01:39:24 +00:00
" $ { P R O J E C T _ S O U R C E _ D I R } / b i n / . * u r e s o u r c e g e n e r a t o r "
2011-06-05 14:45:39 +00:00
" \ \ \ \ . D S _ S t o r e "
)
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}" )
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-05-26 17:43:34 -07:00
IF ( OPENCV_ARUCO_FOUND )
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-05-09 21:13:41 -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-04-16 17:59:45 -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)" )
ELSEIF ( NOT WITH_OCTOMAP )
MESSAGE ( STATUS " With OctoMap = NO (WITH_OCTOMAP=OFF)" )
ELSE ( )
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)" )
2019-08-17 03:55:04 -04:00
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 ( )
MESSAGE ( STATUS " With DepthAI = NO (depthai-core not found)" )
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)" )
2018-03-26 18:06:41 -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 ( )
Add LIO-SAM as an odometry strategy (#1684)
* Added liosam odometry integration
* Add kXYZIRT scan format with per-point ring channel for LIO-SAM integration
Introduce PointXYZIRT point type and kXYZIRT LaserScan format (x,y,z,
intensity,ring,time) so that ring indices survive the scan pipeline.
Update OdometryLIOSAM to require kXYZIRT and properly split ring/time
into the parallel buffers LIO-SAM expects. Extend deskewing to preserve
ring data and disable base-class deskew in OdometryLIOSAM since LIO-SAM
handles it internally.
* Address PR review: config file, deferred init, and GUI panel for LIO-SAM
- Add OdomLIOSAM/ConfigPath parameter to load LIO-SAM settings from a
YAML file. When set, individual params are ignored. Extrinsics from
sensor local transforms always override config file values.
- Defer LioSamCore initialization until both IMU and lidar local
transforms are available, computing T_lidar_imu from sensor data.
IMU samples are buffered and replayed after init.
- Fix deferred init for scan-only messages that arrive after IMU
local transform is already cached.
- Add LIO-SAM entry to odometry strategy combo box (index 14) with
full PreferencesDialog panel including config path browse button
and all parameter widgets.
* OdometryLIOSAM: propagate deskewed scan to SensorData
Capture the deskewed cloud produced by LIO-SAM's image projection
stage and replace the raw scan on SensorData with it, so loop closure
registration and other downstream stages operate on the motion-
compensated points instead of the raw pre-deskew input.
* Minor updates for rtabmap_ros
---------
Co-authored-by: matlabbe <matlabbe@gmail.com>
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
s e t - D W I T H _ T O R O = O N " )
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 :