123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344 |
- cmake_minimum_required(VERSION 2.8)
- project(ORB_SLAM3)
- IF(NOT CMAKE_BUILD_TYPE)
- SET(CMAKE_BUILD_TYPE Release)
- ENDIF()
- MESSAGE("Build type: " ${CMAKE_BUILD_TYPE})
- set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -O3")
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -O3")
- set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -march=native")
- set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -march=native")
- # Check C++14 or C++0x support
- include(CheckCXXCompilerFlag)
- CHECK_CXX_COMPILER_FLAG("-std=c++14" COMPILER_SUPPORTS_CXX14)
- CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
- if(COMPILER_SUPPORTS_CXX14)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
- add_definitions(-DCOMPILEDWITHC14)
- message(STATUS "Using flag -std=c++14.")
- elseif(COMPILER_SUPPORTS_CXX0X)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
- add_definitions(-DCOMPILEDWITHC0X)
- message(STATUS "Using flag -std=c++0x.")
- else()
- message(FATAL_ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
- endif()
- LIST(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake_modules)
- set(CMAKE_PREFIX_PATH "/usr/local/include/opencv4")
- find_package(OpenCV 4.8.1)
- if(NOT OpenCV_FOUND)
- message(FATAL_ERROR "OpenCV > 4.2 not found.")
- endif()
- MESSAGE("OPENCV VERSION:")
- MESSAGE(${OpenCV_VERSION})
- find_package(Eigen3 3.1.0 REQUIRED)
- find_package(Pangolin REQUIRED)
- find_package(realsense2)
- include_directories(
- ${PROJECT_SOURCE_DIR}
- ${PROJECT_SOURCE_DIR}/include
- ${PROJECT_SOURCE_DIR}/include/CameraModels
- ${PROJECT_SOURCE_DIR}/Thirdparty/Sophus
- ${EIGEN3_INCLUDE_DIR}
- ${Pangolin_INCLUDE_DIRS}
- )
- set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib)
- file(GLOB_RECURSE SRC_FILES CONFIGURE_DEPENDS
- ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cc
- ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp
- )
- file(GLOB_RECURSE HEADER_FILES CONFIGURE_DEPENDS
- ${CMAKE_CURRENT_SOURCE_DIR}/include/*.h
- )
- add_library(${PROJECT_NAME} SHARED
- ${SRC_FILES}
- ${HEADER_FILES}
- )
- add_subdirectory(Thirdparty/g2o)
- target_link_libraries(${PROJECT_NAME}
- ${OpenCV_LIBS}
- ${EIGEN3_LIBS}
- ${Pangolin_LIBRARIES}
- ${PROJECT_SOURCE_DIR}/Thirdparty/DBoW2/lib/libDBoW2.so
- ${PROJECT_SOURCE_DIR}/Thirdparty/g2o/lib/libg2o.so
- -lboost_serialization
- -lcrypto
- )
- # If RealSense SDK is found the library is added and its examples compiled
- if(realsense2_FOUND)
- include_directories(${PROJECT_NAME}
- ${realsense_INCLUDE_DIR}
- )
- target_link_libraries(${PROJECT_NAME}
- ${realsense2_LIBRARY}
- )
- endif()
- # Build examples
- # RGB-D examples
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/Examples/RGB-D)
- add_executable(rgbd_tum
- Examples/RGB-D/rgbd_tum.cc)
- target_link_libraries(rgbd_tum ${PROJECT_NAME})
- if(realsense2_FOUND)
- add_executable(rgbd_realsense_D435i
- Examples/RGB-D/rgbd_realsense_D435i.cc)
- target_link_libraries(rgbd_realsense_D435i ${PROJECT_NAME})
- endif()
- # RGB-D inertial examples
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/Examples/RGB-D-Inertial)
- if(realsense2_FOUND)
- add_executable(rgbd_inertial_realsense_D435i
- Examples/RGB-D-Inertial/rgbd_inertial_realsense_D435i.cc)
- target_link_libraries(rgbd_inertial_realsense_D435i ${PROJECT_NAME})
- endif()
- #Stereo examples
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/Examples/Stereo)
- add_executable(stereo_kitti
- Examples/Stereo/stereo_kitti.cc)
- target_link_libraries(stereo_kitti ${PROJECT_NAME})
- add_executable(stereo_euroc
- Examples/Stereo/stereo_euroc.cc)
- target_link_libraries(stereo_euroc ${PROJECT_NAME})
- add_executable(stereo_tum_vi
- Examples/Stereo/stereo_tum_vi.cc)
- target_link_libraries(stereo_tum_vi ${PROJECT_NAME})
- if(realsense2_FOUND)
- add_executable(stereo_realsense_t265
- Examples/Stereo/stereo_realsense_t265.cc)
- target_link_libraries(stereo_realsense_t265 ${PROJECT_NAME})
- add_executable(stereo_realsense_D435i
- Examples/Stereo/stereo_realsense_D435i.cc)
- target_link_libraries(stereo_realsense_D435i ${PROJECT_NAME})
- endif()
- #Monocular examples
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/Examples/Monocular)
- add_executable(mono_tum
- Examples/Monocular/mono_tum.cc)
- target_link_libraries(mono_tum ${PROJECT_NAME})
- add_executable(mono_kitti
- Examples/Monocular/mono_kitti.cc)
- target_link_libraries(mono_kitti ${PROJECT_NAME})
- add_executable(mono_euroc
- Examples/Monocular/mono_euroc.cc)
- target_link_libraries(mono_euroc ${PROJECT_NAME})
- add_executable(mono_tum_vi
- Examples/Monocular/mono_tum_vi.cc)
- target_link_libraries(mono_tum_vi ${PROJECT_NAME})
- if(realsense2_FOUND)
- add_executable(mono_realsense_t265
- Examples/Monocular/mono_realsense_t265.cc)
- target_link_libraries(mono_realsense_t265 ${PROJECT_NAME})
- add_executable(mono_realsense_D435i
- Examples/Monocular/mono_realsense_D435i.cc)
- target_link_libraries(mono_realsense_D435i ${PROJECT_NAME})
- endif()
- #Monocular inertial examples
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/Examples/Monocular-Inertial)
- add_executable(mono_inertial_euroc
- Examples/Monocular-Inertial/mono_inertial_euroc.cc)
- target_link_libraries(mono_inertial_euroc ${PROJECT_NAME})
- add_executable(mono_inertial_tum_vi
- Examples/Monocular-Inertial/mono_inertial_tum_vi.cc)
- target_link_libraries(mono_inertial_tum_vi ${PROJECT_NAME})
- if(realsense2_FOUND)
- add_executable(mono_inertial_realsense_t265
- Examples/Monocular-Inertial/mono_inertial_realsense_t265.cc)
- target_link_libraries(mono_inertial_realsense_t265 ${PROJECT_NAME})
- add_executable(mono_inertial_realsense_D435i
- Examples/Monocular-Inertial/mono_inertial_realsense_D435i.cc)
- target_link_libraries(mono_inertial_realsense_D435i ${PROJECT_NAME})
- endif()
- #Stereo Inertial examples
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/Examples/Stereo-Inertial)
- add_executable(stereo_inertial_euroc
- Examples/Stereo-Inertial/stereo_inertial_euroc.cc)
- target_link_libraries(stereo_inertial_euroc ${PROJECT_NAME})
- add_executable(stereo_inertial_tum_vi
- Examples/Stereo-Inertial/stereo_inertial_tum_vi.cc)
- target_link_libraries(stereo_inertial_tum_vi ${PROJECT_NAME})
- if(realsense2_FOUND)
- add_executable(stereo_inertial_realsense_t265
- Examples/Stereo-Inertial/stereo_inertial_realsense_t265.cc)
- target_link_libraries(stereo_inertial_realsense_t265 ${PROJECT_NAME})
- add_executable(stereo_inertial_realsense_D435i
- Examples/Stereo-Inertial/stereo_inertial_realsense_D435i.cc)
- target_link_libraries(stereo_inertial_realsense_D435i ${PROJECT_NAME})
- endif()
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/Examples/Calibration)
- if(realsense2_FOUND)
- add_executable(recorder_realsense_D435i
- Examples/Calibration/recorder_realsense_D435i.cc)
- target_link_libraries(recorder_realsense_D435i ${PROJECT_NAME})
- add_executable(recorder_realsense_T265
- Examples/Calibration/recorder_realsense_T265.cc)
- target_link_libraries(recorder_realsense_T265 ${PROJECT_NAME})
- endif()
- #Old examples
- # RGB-D examples
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/Examples_old/RGB-D)
- add_executable(rgbd_tum_old
- Examples_old/RGB-D/rgbd_tum.cc)
- target_link_libraries(rgbd_tum_old ${PROJECT_NAME})
- if(realsense2_FOUND)
- add_executable(rgbd_realsense_D435i_old
- Examples_old/RGB-D/rgbd_realsense_D435i.cc)
- target_link_libraries(rgbd_realsense_D435i_old ${PROJECT_NAME})
- endif()
- # RGB-D inertial examples
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/Examples_old/RGB-D-Inertial)
- if(realsense2_FOUND)
- add_executable(rgbd_inertial_realsense_D435i_old
- Examples_old/RGB-D-Inertial/rgbd_inertial_realsense_D435i.cc)
- target_link_libraries(rgbd_inertial_realsense_D435i_old ${PROJECT_NAME})
- endif()
- #Stereo examples
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/Examples_old/Stereo)
- add_executable(stereo_kitti_old
- Examples_old/Stereo/stereo_kitti.cc)
- target_link_libraries(stereo_kitti_old ${PROJECT_NAME})
- add_executable(stereo_euroc_old
- Examples_old/Stereo/stereo_euroc.cc)
- target_link_libraries(stereo_euroc_old ${PROJECT_NAME})
- add_executable(stereo_tum_vi_old
- Examples_old/Stereo/stereo_tum_vi.cc)
- target_link_libraries(stereo_tum_vi_old ${PROJECT_NAME})
- if(realsense2_FOUND)
- add_executable(stereo_realsense_t265_old
- Examples_old/Stereo/stereo_realsense_t265.cc)
- target_link_libraries(stereo_realsense_t265_old ${PROJECT_NAME})
- add_executable(stereo_realsense_D435i_old
- Examples_old/Stereo/stereo_realsense_D435i.cc)
- target_link_libraries(stereo_realsense_D435i_old ${PROJECT_NAME})
- endif()
- #Monocular examples
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/Examples_old/Monocular)
- add_executable(mono_tum_old
- Examples_old/Monocular/mono_tum.cc)
- target_link_libraries(mono_tum_old ${PROJECT_NAME})
- add_executable(mono_kitti_old
- Examples_old/Monocular/mono_kitti.cc)
- target_link_libraries(mono_kitti_old ${PROJECT_NAME})
- add_executable(mono_euroc_old
- Examples_old/Monocular/mono_euroc.cc)
- target_link_libraries(mono_euroc_old ${PROJECT_NAME})
- add_executable(mono_tum_vi_old
- Examples_old/Monocular/mono_tum_vi.cc)
- target_link_libraries(mono_tum_vi_old ${PROJECT_NAME})
- if(realsense2_FOUND)
- add_executable(mono_realsense_t265_old
- Examples_old/Monocular/mono_realsense_t265.cc)
- target_link_libraries(mono_realsense_t265_old ${PROJECT_NAME})
- add_executable(mono_realsense_D435i_old
- Examples_old/Monocular/mono_realsense_D435i.cc)
- target_link_libraries(mono_realsense_D435i_old ${PROJECT_NAME})
- endif()
- #Monocular inertial examples
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/Examples_old/Monocular-Inertial)
- add_executable(mono_inertial_euroc_old
- Examples_old/Monocular-Inertial/mono_inertial_euroc.cc)
- target_link_libraries(mono_inertial_euroc_old ${PROJECT_NAME})
- add_executable(mono_inertial_tum_vi_old
- Examples_old/Monocular-Inertial/mono_inertial_tum_vi.cc)
- target_link_libraries(mono_inertial_tum_vi_old ${PROJECT_NAME})
- if(realsense2_FOUND)
- add_executable(mono_inertial_realsense_t265_old
- Examples_old/Monocular-Inertial/mono_inertial_realsense_t265.cc)
- target_link_libraries(mono_inertial_realsense_t265_old ${PROJECT_NAME})
- add_executable(mono_inertial_realsense_D435i_old
- Examples_old/Monocular-Inertial/mono_inertial_realsense_D435i.cc)
- target_link_libraries(mono_inertial_realsense_D435i_old ${PROJECT_NAME})
- endif()
- #Stereo Inertial examples
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/Examples_old/Stereo-Inertial)
- add_executable(stereo_inertial_euroc_old
- Examples_old/Stereo-Inertial/stereo_inertial_euroc.cc)
- target_link_libraries(stereo_inertial_euroc_old ${PROJECT_NAME})
- add_executable(stereo_inertial_tum_vi_old
- Examples_old/Stereo-Inertial/stereo_inertial_tum_vi.cc)
- target_link_libraries(stereo_inertial_tum_vi_old ${PROJECT_NAME})
- if(realsense2_FOUND)
- add_executable(stereo_inertial_realsense_t265_old
- Examples_old/Stereo-Inertial/stereo_inertial_realsense_t265.cc)
- target_link_libraries(stereo_inertial_realsense_t265_old ${PROJECT_NAME})
- add_executable(stereo_inertial_realsense_D435i_old
- Examples_old/Stereo-Inertial/stereo_inertial_realsense_D435i.cc)
- target_link_libraries(stereo_inertial_realsense_D435i_old ${PROJECT_NAME})
- endif()
|