2011-06-05 14:45:39 +00:00
# Top-Level CmakeLists.txt
2014-12-17 17:28:21 +01:00
# For GNUInstallDirs
cmake_minimum_required ( VERSION 2.8.5 )
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 )
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 )
2017-09-21 20:59:45 -04:00
SET ( RTABMAP_MINOR_VERSION 14 )
2017-10-20 12:09:34 +02:00
SET ( RTABMAP_PATCH_VERSION 3 )
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 } )
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" )
2016-02-15 19:35:24 -05:00
IF ( NOT ANDROID )
SET ( CMAKE_DEBUG_POSTFIX "d" )
2017-03-13 20:51:59 -04:00
ENDIF ( NOT ANDROID )
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 ( )
2017-05-17 16:59:35 -04:00
ADD_DEFINITIONS ( "-Wall" )
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 )
2017-05-17 16:59:35 -04:00
cmake_policy ( SET CMP0020 OLD )
2016-08-11 14:13:29 -04:00
endif ( )
if ( POLICY CMP0043 )
2017-05-17 16:59:35 -04:00
cmake_policy ( SET CMP0043 OLD )
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 )
# GCC 4 required
IF ( UNIX OR MINGW )
EXEC_PROGRAM ( gcc ARGS "-dumpversion" OUTPUT_VARIABLE GCC_VERSION )
IF ( GCC_VERSION VERSION_LESS "4.0.0" )
MESSAGE ( FATAL_ERROR "GCC ${GCC_VERSION} found, but version 4.x.x minimum is required" )
ENDIF ( GCC_VERSION VERSION_LESS "4.0.0" )
ENDIF ( UNIX OR 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 )
# [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 #######
SET ( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${ PROJECT_SOURCE_DIR } /bin )
SET ( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${ PROJECT_SOURCE_DIR } /bin )
SET ( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${ PROJECT_SOURCE_DIR } /lib )
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 #######
set ( INSTALL_INCLUDE_DIR include/ ${ PROJECT_PREFIX } - ${ RTABMAP_MAJOR_VERSION } . ${ RTABMAP_MINOR_VERSION } CACHE PATH
" I n s t a l l a t i o n d i r e c t o r y f o r h e a d e r f i l e s " )
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 ( )
set ( INSTALL_CMAKE_DIR ${ DEF_INSTALL_CMAKE_DIR } CACHE PATH
" I n s t a l l a t i o n d i r e c t o r y f o r C M a k e f i l e s " )
2012-06-24 17:19:34 +00:00
####### BUILD OPTIONS #######
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 )
2012-12-11 18:05:05 +00:00
IF ( APPLE )
2017-05-17 16:59:35 -04:00
OPTION ( BUILD_AS_BUNDLE "Set to ON to build as bundle (DragNDrop)" OFF )
2012-12-11 18:05:05 +00:00
ENDIF ( APPLE )
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 #######
2016-09-01 13:40:44 -04:00
IF ( ANDROID )
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 ( )
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 )
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 )
option ( WITH_VERTIGO "Include Vertigo support" ON )
2015-08-15 12:58:29 -04:00
option ( WITH_CVSBA "Include cvsba support" ON )
2017-08-22 16:20:49 -04:00
option ( WITH_POINTMATCHER "Include libpointmatcher support" ON )
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 )
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 )
2016-06-28 19:00:44 -04:00
option ( WITH_OCTOMAP "Include Octomap support" ON )
2017-05-05 21:44:06 -04:00
option ( WITH_CPUTSDF "Include CPUTSDF support" ON )
2017-05-30 09:27:31 -04:00
option ( WITH_FOVIS "Include FOVIS support" ON )
2017-05-30 14:03:46 -04:00
option ( WITH_VISO2 "Include VISO2 support" ON )
2017-05-31 20:57:24 -04:00
option ( WITH_DVO "Include DVO support" ON )
2017-06-05 19:04:23 -04:00
option ( WITH_ORB_SLAM2 "Include ORB_SLAM2 support" ON )
2016-07-17 21:04:11 -04:00
option ( PCL_OMP "With PCL OMP implementations" ON )
2015-08-13 15:12:43 -04:00
2015-10-02 11:23:15 -04:00
FIND_PACKAGE ( OpenCV REQUIRED QUIET )
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 ( )
2015-10-02 11:23:15 -04:00
FIND_PACKAGE ( ZLIB REQUIRED QUIET )
2016-01-21 17:11:57 -05: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
if ( ( NOT APPLE ) OR ( NOT CMAKE_COMPILER_IS_GNUCXX ) OR ( GCC_VERSION VERSION_GREATER 4.2.1 ) OR ( CMAKE_CXX_COMPILER_ID STREQUAL "Clang" ) )
find_package ( OpenMP )
endif ( )
if ( OPENMP_FOUND )
set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}" )
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}" )
message ( STATUS "Found OpenMP" )
2016-07-17 21:04:11 -04:00
if ( PCL_OMP )
add_definitions ( -DPCL_OMP )
endif ( PCL_OMP )
2016-01-21 17:11:57 -05:00
else ( OPENMP_FOUND )
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 )
MESSAGE ( FATAL_ERROR "VTK is required when using Qt. Set -DWITH_QT=OFF if you don't want gui tools." )
ENDIF ( NOT VTK_FOUND )
2016-05-04 16:45:19 -04:00
# If Qt is here, the GUI will be built
2016-05-09 11:17:51 -04:00
# look for Qt5 (if vtk>5 is installed) before Qt4
IF ( "${VTK_MAJOR_VERSION}" GREATER 5 )
2016-09-27 15:43:23 -04:00
FIND_PACKAGE ( Qt5 COMPONENTS Widgets Core Gui QUIET )
IF ( Qt5_FOUND )
2017-08-03 16:40:12 -04:00
FIND_PACKAGE ( Qt5 COMPONENTS Widgets Core Gui OPTIONAL_COMPONENTS Svg )
2016-09-27 15:43:23 -04:00
ENDIF ( Qt5_FOUND )
2016-05-09 11:17:51 -04:00
ENDIF ( "${VTK_MAJOR_VERSION}" GREATER 5 )
2016-05-04 16:45:19 -04:00
IF ( NOT Qt5_FOUND )
2017-08-03 16:40:12 -04:00
FIND_PACKAGE ( Qt4 COMPONENTS QtCore QtGui OPTIONAL_COMPONENTS QtSvg )
2016-05-04 16:45:19 -04:00
ENDIF ( NOT Qt5_FOUND )
2015-08-13 15:12:43 -04:00
IF ( QT4_FOUND OR Qt5_FOUND )
IF ( "${VTK_MAJOR_VERSION}" EQUAL 5 )
FIND_PACKAGE ( QVTK REQUIRED ) # only for VTK 5
2016-09-27 15:43:23 -04:00
ELSE ( )
list ( FIND PCL_LIBRARIES vtkGUISupportQt value )
IF ( value EQUAL -1 )
SET ( PCL_LIBRARIES "${PCL_LIBRARIES};vtkGUISupportQt" )
SET ( ADD_VTK_GUI_SUPPORT_QT_TO_CONF TRUE )
ENDIF ( value EQUAL -1 )
ENDIF ( )
2015-08-13 15:12:43 -04:00
ENDIF ( QT4_FOUND OR Qt5_FOUND )
ENDIF ( WITH_QT )
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 )
2017-11-06 00:19:12 -05:00
IF ( WITH_K4W2 )
FIND_PACKAGE ( KinectSDK2 QUIET )
IF ( KinectSDK2_FOUND )
MESSAGE ( STATUS "Found Kinect for Windows 2: ${KinectSDK2_INCLUDE_DIRS}" )
ENDIF ( KinectSDK2_FOUND )
ENDIF ( WITH_K4W2 )
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 )
2015-10-02 11:23:15 -04:00
FIND_PACKAGE ( G2O QUIET )
IF ( G2O_FOUND )
MESSAGE ( STATUS "Found g2o: ${G2O_INCLUDE_DIRS}" )
ENDIF ( G2O_FOUND )
2015-08-13 15:12:43 -04:00
ENDIF ( WITH_G2O )
2015-09-02 17:51:43 -04:00
IF ( WITH_GTSAM )
2015-10-02 11:23:15 -04:00
FIND_PACKAGE ( GTSAM QUIET )
2015-09-02 17:51:43 -04:00
ENDIF ( WITH_GTSAM )
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 )
2017-05-17 16:59:35 -04:00
FIND_PACKAGE ( cvsba QUIET )
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 )
MESSAGE ( STATUS "Found libpointmatcher: ${libpointmatcher_INCLUDE_DIRS}" )
ENDIF ( libpointmatcher_FOUND )
ENDIF ( WITH_POINTMATCHER )
2016-05-31 19:09:49 -04:00
IF ( WITH_ZED )
2017-05-17 16:59:35 -04:00
IF ( WIN32 ) # Windows
SET ( ZED_INCLUDE_DIRS $ENV{ ZED_INCLUDE_DIRS } )
if ( CMAKE_CL_64 ) # 64 bits
SET ( ZED_LIBRARIES $ENV{ ZED_LIBRARIES_64 } )
else ( CMAKE_CL_64 ) # 32 bits
message ( "32bits compilation is no more available with CUDA7.0" )
endif ( CMAKE_CL_64 )
SET ( ZED_LIBRARY_DIR $ENV{ ZED_LIBRARY_DIR } )
IF ( ZED_LIBRARIES AND ZED_INCLUDE_DIRS )
SET ( ZED_FOUND TRUE )
LINK_DIRECTORIES ( ${ LINK_DIRECTORIES } ${ ZED_LIBRARY_DIR } )
ENDIF ( ZED_LIBRARIES AND ZED_INCLUDE_DIRS )
ELSE ( ) # Linux
2017-10-11 16:44:53 -04:00
find_package ( ZED 2 QUIET )
2017-05-17 16:59:35 -04:00
ENDIF ( WIN32 )
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 ( )
MESSAGE ( FATAL_ERROR "CUDA is required to build with Zed sdk! Set -DWITH_ZED=OFF if you don't have CUDA." )
ENDIF ( )
2016-05-31 19:09:49 -04:00
ENDIF ( ZED_FOUND )
ENDIF ( WITH_ZED )
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 )
2016-06-28 19:00:44 -04:00
IF ( WITH_OCTOMAP )
2017-05-17 16:59:35 -04:00
FIND_PACKAGE ( OCTOMAP QUIET )
2016-06-28 19:00:44 -04:00
IF ( OCTOMAP_FOUND )
MESSAGE ( STATUS "Found octomap: ${OCTOMAP_INCLUDE_DIRS}" )
ENDIF ( OCTOMAP_FOUND )
ENDIF ( WITH_OCTOMAP )
2017-05-05 21:44:06 -04:00
IF ( WITH_CPUTSDF )
2017-05-17 16:59:35 -04:00
FIND_PACKAGE ( CPUTSDF QUIET )
2017-05-05 21:44:06 -04:00
IF ( CPUTSDF_FOUND )
MESSAGE ( STATUS "Found CPUTSDF: ${CPUTSDF_INCLUDE_DIRS}" )
ENDIF ( CPUTSDF_FOUND )
ENDIF ( WITH_CPUTSDF )
2017-05-30 09:27:31 -04:00
IF ( WITH_FOVIS )
FIND_PACKAGE ( libfovis QUIET )
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 )
FIND_PACKAGE ( libviso2 QUIET )
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 )
FIND_PACKAGE ( dvo_core QUIET )
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
2017-07-07 19:41:11 -04:00
IF ( WITH_ORB_SLAM2 AND NOT G2O_FOUND )
2017-06-05 19:04:23 -04:00
FIND_PACKAGE ( ORB_SLAM2 QUIET )
IF ( ORB_SLAM2_FOUND )
MESSAGE ( STATUS "Found ORB_SLAM2: ${ORB_SLAM2_INCLUDE_DIRS}" )
FIND_PACKAGE ( Pangolin QUIET )
IF ( NOT Pangolin_FOUND )
SET ( ORB_SLAM2_FOUND FALSE )
MESSAGE ( STATUS "Found ORB_SLAM2 but not Pangolin, disabling ORB_SLAM2." )
ELSE ( )
MESSAGE ( STATUS "Found Pangolin: ${Pangolin_INCLUDE_DIRS}" )
SET ( ORB_SLAM2_INCLUDE_DIRS ${ ORB_SLAM2_INCLUDE_DIRS } ${ Pangolin_INCLUDE_DIRS } )
SET ( ORB_SLAM2_LIBRARIES ${ ORB_SLAM2_LIBRARIES } ${ Pangolin_LIBRARIES } )
2017-07-07 19:41:11 -04:00
MESSAGE ( WARNING "Don't forget to build ORB_SLAM2 (and included g2o) without \" -march=native\ " to avoid crash when ORB_SLAM2 starts." )
2017-06-05 19:04:23 -04:00
ENDIF ( )
ENDIF ( ORB_SLAM2_FOUND )
2017-07-07 19:41:11 -04:00
ENDIF ( WITH_ORB_SLAM2 AND NOT G2O_FOUND )
2017-06-05 19:04:23 -04:00
IF ( G2O_FOUND OR GTSAM_FOUND OR ZED_FOUND OR ANDROID OR RealSense_FOUND OR ORB_SLAM2_FOUND )
2016-05-31 20:19:04 -04:00
#Newest versions require std11
IF ( NOT MSVC )
include ( CheckCXXCompilerFlag )
2017-05-17 16:59:35 -04:00
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 if you want to use g2o or gtsam (set \" -DWITH_G2O=OFF -DWITH_GTSAM=OFF\ " to build without g2o and gtsam)." )
ENDIF ( )
2016-05-31 20:19:04 -04:00
ENDIF ( )
2017-06-05 19:04:23 -04:00
ENDIF ( G2O_FOUND OR GTSAM_FOUND OR ZED_FOUND OR ANDROID OR RealSense_FOUND OR ORB_SLAM2_FOUND )
2016-05-31 20:19:04 -04:00
2011-06-05 14:45:39 +00:00
####### OSX BUNDLE CMAKE_INSTALL_PREFIX #######
IF ( APPLE AND BUILD_AS_BUNDLE )
2015-03-26 06:58:31 -04:00
IF ( 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
# CONF_DEPENDENCIES contains only dependencies not required by the headers
SET ( CONF_DEPENDENCIES
2017-05-17 16:59:35 -04:00
$ { Z L I B _ L I B R A R I E S }
2016-06-01 13:13:30 -04:00
)
2016-03-01 14:25:00 -05:00
IF ( NOT ( OPENCV_NONFREE_FOUND OR OPENCV_XFEATURES2D_FOUND ) )
SET ( NONFREE "//" )
ENDIF ( NOT ( OPENCV_NONFREE_FOUND OR OPENCV_XFEATURES2D_FOUND ) )
IF ( NOT G2O_FOUND )
SET ( G2O "//" )
2016-06-01 13:13:30 -04:00
ELSE ( )
SET ( CONF_DEPENDENCIES ${ CONF_DEPENDENCIES } ${ G2O_LIBRARIES } )
ENDIF ( )
2016-03-01 14:25:00 -05:00
IF ( NOT GTSAM_FOUND )
SET ( GTSAM "//" )
2016-06-01 13:13:30 -04:00
ELSE ( )
SET ( CONF_DEPENDENCIES ${ CONF_DEPENDENCIES } ${ GTSAM_LIBRARIES } )
ENDIF ( )
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
ELSE ( )
SET ( CONF_DEPENDENCIES ${ CONF_DEPENDENCIES } ${ cvsba_LIBRARIES } )
ENDIF ( )
2017-08-22 16:20:49 -04:00
IF ( NOT libpointmatcher_FOUND )
SET ( POINTMATCHER "//" )
ENDIF ( NOT libpointmatcher_FOUND )
2016-03-01 14:25:00 -05:00
IF ( NOT Freenect_FOUND )
SET ( FREENECT "//" )
2016-06-01 13:13:30 -04:00
ELSE ( )
SET ( CONF_DEPENDENCIES ${ CONF_DEPENDENCIES } ${ Freenect_LIBRARIES } )
ENDIF ( )
2016-03-01 14:25:00 -05:00
IF ( NOT freenect2_FOUND )
SET ( FREENECT2 "//" )
2016-06-01 13:13:30 -04:00
ELSE ( )
SET ( CONF_DEPENDENCIES ${ CONF_DEPENDENCIES } ${ freenect2_LIBRARIES } )
ENDIF ( )
2017-11-06 00:19:12 -05:00
IF ( NOT KinectSDK2_FOUND )
SET ( K4W2 "//" )
ELSE ( )
SET ( CONF_DEPENDENCIES ${ CONF_DEPENDENCIES } ${ KinectSDK2_LIBRARIES } )
ENDIF ( )
2016-03-01 14:25:00 -05:00
IF ( NOT OpenNI2_FOUND )
SET ( OPENNI2 "//" )
2016-06-01 13:13:30 -04:00
ELSE ( )
SET ( CONF_DEPENDENCIES ${ CONF_DEPENDENCIES } ${ OpenNI2_LIBRARIES } )
ENDIF ( )
2016-03-01 14:25:00 -05:00
IF ( NOT DC1394_FOUND )
SET ( DC1394 "//" )
2016-06-01 13:13:30 -04:00
ELSE ( )
SET ( CONF_DEPENDENCIES ${ CONF_DEPENDENCIES } ${ DC1394_LIBRARIES } )
ENDIF ( )
2016-03-01 14:25:00 -05:00
IF ( NOT FlyCapture2_FOUND )
SET ( FLYCAPTURE2 "//" )
2016-06-01 13:13:30 -04:00
ELSE ( )
SET ( CONF_DEPENDENCIES ${ CONF_DEPENDENCIES } ${ FlyCapture2_LIBRARIES } )
ENDIF ( )
2016-05-31 19:09:49 -04:00
IF ( NOT ZED_FOUND )
SET ( ZED "//" )
2016-06-01 13:13:30 -04:00
ELSE ( )
SET ( CONF_DEPENDENCIES ${ CONF_DEPENDENCIES } ${ ZED_LIBRARIES } ${ CUDA_LIBRARIES } )
ENDIF ( )
2016-07-26 18:39:34 -04:00
IF ( NOT RealSense_FOUND )
SET ( REALSENSE "//" )
ELSE ( )
SET ( CONF_DEPENDENCIES ${ CONF_DEPENDENCIES } ${ RealSense_LIBRARIES } )
ENDIF ( )
2017-04-21 21:58:38 -04:00
IF ( NOT RealSenseSlam_FOUND )
SET ( REALSENSESLAM "//" )
ENDIF ( NOT RealSenseSlam_FOUND )
2016-06-28 19:00:44 -04:00
IF ( NOT OCTOMAP_FOUND )
SET ( OCTOMAP "//" )
ELSE ( )
SET ( CONF_DEPENDENCIES ${ CONF_DEPENDENCIES } ${ OCTOMAP_LIBRARIES } )
ENDIF ( )
2017-05-05 21:44:06 -04:00
IF ( NOT CPUTSDF_FOUND )
SET ( CPUTSDF "//" )
ELSE ( )
SET ( CONF_DEPENDENCIES ${ CONF_DEPENDENCIES } ${ CPUTSDF_LIBRARIES } )
ENDIF ( )
2017-05-30 09:27:31 -04:00
IF ( NOT libfovis_FOUND )
SET ( FOVIS "//" )
ELSE ( )
SET ( CONF_DEPENDENCIES ${ CONF_DEPENDENCIES } ${ libfovis_LIBRARIES } )
ENDIF ( )
2017-05-30 14:03:46 -04:00
IF ( NOT libviso2_FOUND )
SET ( VISO2 "//" )
ELSE ( )
SET ( CONF_DEPENDENCIES ${ CONF_DEPENDENCIES } ${ libviso2_LIBRARIES } )
ENDIF ( )
2017-05-31 20:57:24 -04:00
IF ( NOT dvo_core_FOUND )
SET ( DVO "//" )
ELSE ( )
SET ( CONF_DEPENDENCIES ${ CONF_DEPENDENCIES } ${ dvo_core_LIBRARIES } )
ENDIF ( )
2017-06-05 19:04:23 -04:00
IF ( NOT ORB_SLAM2_FOUND )
SET ( ORB_SLAM2 "//" )
ELSE ( )
SET ( CONF_DEPENDENCIES ${ CONF_DEPENDENCIES } ${ ORB_SLAM2_LIBRARIES } )
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 )
2016-09-27 15:43:23 -04:00
SET ( CONF_DEPENDENCIES ${ CONF_DEPENDENCIES } vtkGUISupportQt )
2016-09-29 12:40:51 -04:00
ELSE ( )
SET ( CONF_VTK_QT false )
ENDIF ( )
2017-10-16 16:00:52 +02:00
IF ( VTK_USE_QVTK )
SET ( CONF_DEPENDENCIES ${ CONF_DEPENDENCIES } ${ QVTK_LIBRARY } )
ENDIF ( VTK_USE_QVTK )
2016-03-01 14:25:00 -05:00
IF ( NOT ( OpenCV_FOUND AND OpenCV_VERSION_MAJOR EQUAL 3 ) )
SET ( OPENCV3 "//" )
ENDIF ( NOT ( OpenCV_FOUND AND OpenCV_VERSION_MAJOR EQUAL 3 ) )
2014-11-21 23:37:23 +00:00
CONFIGURE_FILE ( Version.h.in ${ PROJECT_SOURCE_DIR } /corelib/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 )
ELSEIF ( Qt5_FOUND OR ( QT4_FOUND AND QT_QTCORE_FOUND AND QT_QTGUI_FOUND ) )
2011-06-05 14:45:39 +00:00
ADD_SUBDIRECTORY ( guilib )
2016-01-21 17:11:57 -05:00
IF ( BUILD_APP )
ADD_SUBDIRECTORY ( app )
ENDIF ( BUILD_APP )
2015-08-13 15:12:43 -04:00
ELSEIF ( WITH_QT )
MESSAGE ( WARNING "Qt not found, the GUI lib and the stand-alone application will not be compiled..." )
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"
#######################
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 " )
2013-12-11 00:12:44 +00:00
####
# Setup RTABMapConfig.cmake
####
# Create the RTABMapConfig.cmake and RTABMapConfigVersion files
2013-12-13 00:51:48 +00:00
file ( RELATIVE_PATH REL_INCLUDE_DIR "${CMAKE_INSTALL_PREFIX}/${INSTALL_CMAKE_DIR}" "${CMAKE_INSTALL_PREFIX}/${INSTALL_INCLUDE_DIR}" )
2014-12-17 17:28:21 +01:00
file ( RELATIVE_PATH REL_LIB_DIR "${CMAKE_INSTALL_PREFIX}/${INSTALL_CMAKE_DIR}" "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}" )
2013-12-13 00:51:48 +00:00
2013-12-11 00:12:44 +00:00
# ... for the build tree
2013-12-13 00:51:48 +00:00
set ( CONF_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/corelib/include"
2017-05-17 16:59:35 -04:00
" $ { P R O J E C T _ S O U R C E _ D I R } / g u i l i b / i n c l u d e "
" $ { P R O J E C T _ S O U R C E _ D I R } / u t i l i t e / i n c l u d e " )
2016-03-23 19:07:44 -04:00
set ( CONF_LIB_DIR "${CMAKE_ARCHIVE_OUTPUT_DIRECTORY} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}" )
2016-01-21 17:11:57 -05:00
IF ( QT4_FOUND OR Qt5_FOUND )
set ( CONF_WITH_GUI ON )
2016-05-09 11:17:51 -04:00
IF ( QT4_FOUND )
set ( CONF_QT_VERSION 4 )
ELSE ( )
set ( CONF_QT_VERSION 5 )
ENDIF ( )
2016-01-21 17:11:57 -05:00
ELSE ( )
set ( CONF_WITH_GUI OFF )
ENDIF ( )
2013-12-11 00:12:44 +00:00
configure_file ( RTABMapConfig.cmake.in
" $ { P R O J E C T _ B I N A R Y _ D I R } / R T A B M a p C o n f i g . c m a k e " @ O N L Y )
2013-12-13 00:51:48 +00:00
2013-12-11 00:12:44 +00:00
# ... for the install tree
set ( CONF_INCLUDE_DIRS "\${RTABMap_CMAKE_DIR}/${REL_INCLUDE_DIR}" )
2013-12-13 00:51:48 +00:00
set ( CONF_LIB_DIR "\${RTABMap_CMAKE_DIR}/${REL_LIB_DIR}" )
2013-12-11 00:12:44 +00:00
configure_file ( RTABMapConfig.cmake.in
" $ { P R O J E C 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 } / R T A B M a p C o n f i g . c m a k e " @ O N L Y )
2013-12-13 00:51:48 +00:00
2013-12-11 00:12:44 +00:00
# ... for both
configure_file ( RTABMapConfigVersion.cmake.in
" $ { P R O J E C T _ B I N A R Y _ D I R } / R T A B M a p C o n f i g V e r s i o n . c m a k e " @ O N L Y )
# Install the RTABMapConfig.cmake and RTABMapConfigVersion.cmake
install ( FILES
" $ { P R O J E C 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 } / R T A B M a p C o n f i g . c m a k e "
" $ { P R O J E C T _ B I N A R Y _ D I R } / R T A B M a p 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 )
####
2011-06-05 14:45:39 +00:00
2014-11-25 15:00:46 -05:00
### Install package.xml for catkin
2014-12-20 14:14:35 -05:00
install ( FILES package.xml DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_PREFIX}" )
2014-11-25 15:00:46 -05:00
2011-06-05 14:45:39 +00:00
#######################
# CPACK (Packaging)
#######################
INCLUDE ( InstallRequiredSystemLibraries )
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" )
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 ( )
2014-06-16 22:00:10 +00:00
SET ( CPACK_GENERATOR "ZIP;NSIS" )
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 :" )
2016-01-04 16:33:34 -05:00
MESSAGE ( STATUS " Version : ${RTABMAP_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 )
2011-06-05 14:45:39 +00:00
IF ( APPLE )
2016-03-23 19:56:45 -04:00
MESSAGE ( STATUS " BUILD_AS_BUNDLE = ${BUILD_AS_BUNDLE}" )
2011-06-05 14:45:39 +00:00
ENDIF ( APPLE )
2016-01-11 17:21:06 -05:00
MESSAGE ( STATUS " CMAKE_CXX_FLAGS = ${CMAKE_CXX_FLAGS}" )
2014-06-13 23:44:38 +00:00
2015-06-19 18:12:52 -04:00
IF ( OpenCV_FOUND )
IF ( OpenCV_VERSION_MAJOR EQUAL 2 )
IF ( OPENCV_NONFREE_FOUND )
2016-03-01 14:25:00 -05:00
MESSAGE ( STATUS " With OpenCV 2 nonfree module (SIFT/SURF) = YES (License: Non commercial)" )
2015-06-19 18:12:52 -04:00
ELSE ( )
2016-03-01 14:25:00 -05:00
MESSAGE ( STATUS " With OpenCV 2 nonfree module (SIFT/SURF) = NO (not found, License: BSD)" )
2015-06-19 18:12:52 -04:00
ENDIF ( )
ELSE ( )
IF ( OPENCV_XFEATURES2D_FOUND )
2016-03-01 14:25:00 -05:00
MESSAGE ( STATUS " With OpenCV 3 xfeatures2d module (SIFT/SURF/BRIEF/FREAK) = YES (License: Non commercial)" )
2015-06-19 18:12:52 -04:00
ELSE ( )
2016-03-01 14:25:00 -05:00
MESSAGE ( STATUS " With OpenCV 3 xfeatures2d module (SIFT/SURF/BRIEF/FREAK) = NO (not found, License: BSD)" )
2015-06-19 18:12:52 -04:00
ENDIF ( )
ENDIF ( )
ENDIF ( OpenCV_FOUND )
2014-11-21 23:37:23 +00:00
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
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 ( )
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 ( )
2016-03-01 14:25:00 -05:00
IF ( WITH_TORO )
MESSAGE ( STATUS " With TORO = YES (License: Creative Commons [Attribution-NonCommercial-ShareAlike])" )
ELSE ( )
MESSAGE ( STATUS " With TORO = NO (WITH_TORO=OFF)" )
ENDIF ( )
2015-03-12 17:00:56 -04:00
IF ( G2O_FOUND )
2016-03-01 14:25:00 -05:00
MESSAGE ( STATUS " With g2o = YES (License: BSD)" )
2015-08-13 15:12:43 -04:00
ELSEIF ( NOT WITH_G2O )
MESSAGE ( STATUS " With g2o = NO (WITH_G2O=OFF)" )
2015-03-12 17:00:56 -04:00
ELSE ( )
2015-07-28 23:48:50 -04:00
MESSAGE ( STATUS " With g2o = NO (g2o not found)" )
2015-03-12 17:00:56 -04:00
ENDIF ( )
2015-09-02 17:51:43 -04:00
IF ( GTSAM_FOUND )
2016-03-01 14:25:00 -05:00
MESSAGE ( STATUS " With GTSAM = YES (License: BSD)" )
2015-09-02 17:51:43 -04:00
ELSEIF ( NOT WITH_GTSAM )
MESSAGE ( STATUS " With GTSAM = NO (WITH_GTSAM=OFF)" )
ELSE ( )
MESSAGE ( STATUS " With GTSAM = NO (GTSAM not found)" )
ENDIF ( )
2017-06-05 19:04:23 -04:00
IF ( G2O_FOUND OR GTSAM_FOUND )
2016-03-01 14:25:00 -05:00
IF ( WITH_VERTIGO )
MESSAGE ( STATUS " With VERTIGO = YES (License: GPLv3)" )
ELSE ( )
MESSAGE ( STATUS " With VERTIGO = NO (WITH_VERTIGO=OFF)" )
ENDIF ( )
2017-06-05 19:04:23 -04:00
ELSE ( )
MESSAGE ( STATUS " With VERTIGO = NO (GTSAM or g2o required)" )
ENDIF ( )
2016-03-01 14:25:00 -05:00
2015-08-12 20:59:21 -04:00
IF ( cvsba_FOUND )
2016-03-01 14:25:00 -05:00
MESSAGE ( STATUS " With cvsba = YES (License: GPLv2)" )
2015-08-15 12:58:29 -04:00
ELSEIF ( NOT WITH_CVSBA )
MESSAGE ( STATUS " With cvsba = NO (WITH_CVSBA=OFF)" )
2015-08-12 20:59:21 -04:00
ELSE ( )
MESSAGE ( STATUS " With cvsba = NO (cvsba not found)" )
ENDIF ( )
2017-08-22 16:20:49 -04:00
IF ( libpointmatcher_FOUND )
MESSAGE ( STATUS " With libpointmatcher = YES (License: BSD)" )
ELSEIF ( NOT WITH_POINTMATCHER )
MESSAGE ( STATUS " With libpointmatcher = NO (WITH_POINTMATCHER=OFF)" )
ELSE ( )
MESSAGE ( STATUS " With libpointmatcher = NO (libpointmatcher not found)" )
ENDIF ( )
2016-05-31 19:09:49 -04:00
IF ( ZED_FOUND )
IF ( CUDA_FOUND )
MESSAGE ( STATUS " With ZED = YES (With CUDA)" )
ELSE ( )
MESSAGE ( STATUS " With ZED = YES (Without CUDA)" )
ENDIF ( )
ELSEIF ( NOT WITH_ZED )
MESSAGE ( STATUS " With ZED = NO (WITH_ZED=OFF)" )
ELSE ( )
MESSAGE ( STATUS " With ZED = NO (ZED sdk 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 ( )
2016-06-28 19:00:44 -04:00
IF ( OCTOMAP_FOUND )
MESSAGE ( STATUS " With OCTOMAP = 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 ( )
2017-05-05 21:44:06 -04:00
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 ( )
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 ( )
2017-06-05 19:04:23 -04:00
IF ( ORB_SLAM2_FOUND )
MESSAGE ( STATUS " With ORB_SLAM2 = YES (License: GPLv3)" )
ELSEIF ( NOT WITH_ORB_SLAM2 )
MESSAGE ( STATUS " With ORB_SLAM2 = NO (WITH_ORB_SLAM2=OFF)" )
ELSEIF ( G2O_FOUND )
MESSAGE ( STATUS " With ORB_SLAM2 = NO (WITH_G2O should be OFF as ORB_SLAM2 uses its own g2o version)" )
ELSE ( )
MESSAGE ( STATUS " With ORB_SLAM2 = NO (ORB_SLAM2 not found, make sure environment variable ORB_SLAM2_ROOT_DIR is set)" )
ENDIF ( )
2015-03-26 06:58:31 -04:00
IF ( QT4_FOUND )
2016-03-01 14:25:00 -05:00
MESSAGE ( STATUS " With Qt4 = YES (License: Open Source or Commercial)" )
2015-03-26 06:58:31 -04:00
ELSEIF ( Qt5_FOUND )
2016-03-01 14:25:00 -05:00
MESSAGE ( STATUS " With Qt5 = YES (License: Open Source or Commercial)" )
2015-08-13 15:12:43 -04:00
ELSEIF ( NOT WITH_QT )
MESSAGE ( STATUS " With Qt = NO (WITH_QT=OFF)" )
2015-03-26 06:58:31 -04:00
ELSE ( )
2016-05-04 16:45:19 -04:00
MESSAGE ( STATUS " With Qt = NO (Qt not found)" )
2015-03-26 06:58:31 -04:00
ENDIF ( )
2011-06-05 14:45:39 +00:00
MESSAGE ( STATUS "--------------------------------------------" )
2016-03-01 14:25:00 -05:00
IF ( NOT GTSAM_FOUND AND NOT G2O_FOUND AND NOT WITH_TORO )
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 )
s e t - D W I T H _ T O R O = O N " )
ENDIF ( NOT GTSAM_FOUND AND NOT G2O_FOUND AND NOT WITH_TORO )
2017-05-17 16:59:35 -04:00
# vim: set et ft=cmake fenc=utf-8 ff=unix sts=0 sw=2 ts=2 :