|
| 1 | +cmake_minimum_required(VERSION 2.8) |
| 2 | +project(ORB_SLAM3) |
| 3 | + |
| 4 | +IF(NOT CMAKE_BUILD_TYPE) |
| 5 | + SET(CMAKE_BUILD_TYPE Release) |
| 6 | +ENDIF() |
| 7 | + |
| 8 | +MESSAGE("Build type: " ${CMAKE_BUILD_TYPE}) |
| 9 | + |
| 10 | +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -O3") |
| 11 | +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -O3") |
| 12 | +set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -march=native") |
| 13 | +set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -march=native") |
| 14 | + |
| 15 | +# set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wno-deprecated -O3 -march=native ") |
| 16 | +# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-deprecated -O3 -march=native") |
| 17 | + |
| 18 | +# Check C++11 or C++0x support |
| 19 | +include(CheckCXXCompilerFlag) |
| 20 | +CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11) |
| 21 | +CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X) |
| 22 | +if(COMPILER_SUPPORTS_CXX11) |
| 23 | + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") |
| 24 | + add_definitions(-DCOMPILEDWITHC11) |
| 25 | + message(STATUS "Using flag -std=c++11.") |
| 26 | +elseif(COMPILER_SUPPORTS_CXX0X) |
| 27 | + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") |
| 28 | + add_definitions(-DCOMPILEDWITHC0X) |
| 29 | + message(STATUS "Using flag -std=c++0x.") |
| 30 | +else() |
| 31 | + message(FATAL_ERROR "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.") |
| 32 | +endif() |
| 33 | + |
| 34 | +LIST(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake_modules) |
| 35 | + |
| 36 | +find_package(OpenCV 3) |
| 37 | +if(NOT OpenCV_FOUND) |
| 38 | + find_package(OpenCV 2.4.3 QUIET) |
| 39 | + if(NOT OpenCV_FOUND) |
| 40 | + message(FATAL_ERROR "OpenCV > 2.4.3 not found.") |
| 41 | + endif() |
| 42 | +endif() |
| 43 | + |
| 44 | +MESSAGE("OPENCV VERSION:") |
| 45 | +MESSAGE(${OpenCV_VERSION}) |
| 46 | + |
| 47 | +find_package(Eigen3 3.1.0 REQUIRED) |
| 48 | +find_package(Pangolin REQUIRED) |
| 49 | + |
| 50 | +include_directories( |
| 51 | +${PROJECT_SOURCE_DIR} |
| 52 | +${PROJECT_SOURCE_DIR}/include |
| 53 | +${PROJECT_SOURCE_DIR}/include/CameraModels |
| 54 | +${EIGEN3_INCLUDE_DIR} |
| 55 | +${Pangolin_INCLUDE_DIRS} |
| 56 | +) |
| 57 | + |
| 58 | +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib) |
| 59 | + |
| 60 | +add_library(${PROJECT_NAME} SHARED |
| 61 | +src/System.cc |
| 62 | +src/Tracking.cc |
| 63 | +src/LocalMapping.cc |
| 64 | +src/LoopClosing.cc |
| 65 | +src/ORBextractor.cc |
| 66 | +src/ORBmatcher.cc |
| 67 | +src/FrameDrawer.cc |
| 68 | +src/Converter.cc |
| 69 | +src/MapPoint.cc |
| 70 | +src/KeyFrame.cc |
| 71 | +src/Atlas.cc |
| 72 | +src/Map.cc |
| 73 | +src/MapDrawer.cc |
| 74 | +src/Optimizer.cc |
| 75 | +src/PnPsolver.cc |
| 76 | +src/Frame.cc |
| 77 | +src/KeyFrameDatabase.cc |
| 78 | +src/Sim3Solver.cc |
| 79 | +src/Initializer.cc |
| 80 | +src/Viewer.cc |
| 81 | +src/ImuTypes.cc |
| 82 | +src/G2oTypes.cc |
| 83 | +src/CameraModels/Pinhole.cpp |
| 84 | +src/CameraModels/KannalaBrandt8.cpp |
| 85 | +src/OptimizableTypes.cpp |
| 86 | +src/MLPnPsolver.cpp |
| 87 | +include/System.h |
| 88 | +include/Tracking.h |
| 89 | +include/LocalMapping.h |
| 90 | +include/LoopClosing.h |
| 91 | +include/ORBextractor.h |
| 92 | +include/ORBmatcher.h |
| 93 | +include/FrameDrawer.h |
| 94 | +include/Converter.h |
| 95 | +include/MapPoint.h |
| 96 | +include/KeyFrame.h |
| 97 | +include/Atlas.h |
| 98 | +include/Map.h |
| 99 | +include/MapDrawer.h |
| 100 | +include/Optimizer.h |
| 101 | +include/PnPsolver.h |
| 102 | +include/Frame.h |
| 103 | +include/KeyFrameDatabase.h |
| 104 | +include/Sim3Solver.h |
| 105 | +include/Initializer.h |
| 106 | +include/Viewer.h |
| 107 | +include/ImuTypes.h |
| 108 | +include/G2oTypes.h |
| 109 | +include/CameraModels/GeometricCamera.h |
| 110 | +include/CameraModels/Pinhole.h |
| 111 | +include/CameraModels/KannalaBrandt8.h |
| 112 | +include/OptimizableTypes.h |
| 113 | +include/MLPnPsolver.h |
| 114 | +include/TwoViewReconstruction.h |
| 115 | +src/TwoViewReconstruction.cc) |
| 116 | + |
| 117 | +add_subdirectory(Thirdparty/g2o) |
| 118 | + |
| 119 | +target_link_libraries(${PROJECT_NAME} |
| 120 | +${OpenCV_LIBS} |
| 121 | +${EIGEN3_LIBS} |
| 122 | +${Pangolin_LIBRARIES} |
| 123 | +${PROJECT_SOURCE_DIR}/Thirdparty/DBoW2/lib/libDBoW2.so |
| 124 | +${PROJECT_SOURCE_DIR}/Thirdparty/g2o/lib/libg2o.so |
| 125 | +-lboost_serialization |
| 126 | +-lcrypto |
| 127 | +) |
| 128 | + |
| 129 | + |
| 130 | +# Build examples |
| 131 | + |
| 132 | +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/Examples/RGB-D) |
| 133 | +add_executable(rgbd_tum |
| 134 | +Examples/RGB-D/rgbd_tum.cc) |
| 135 | +target_link_libraries(rgbd_tum ${PROJECT_NAME}) |
| 136 | + |
| 137 | + |
| 138 | +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/Examples/Stereo) |
| 139 | + |
| 140 | +add_executable(stereo_kitti |
| 141 | +Examples/Stereo/stereo_kitti.cc) |
| 142 | +target_link_libraries(stereo_kitti ${PROJECT_NAME}) |
| 143 | + |
| 144 | +add_executable(stereo_euroc |
| 145 | +Examples/Stereo/stereo_euroc.cc) |
| 146 | +target_link_libraries(stereo_euroc ${PROJECT_NAME}) |
| 147 | + |
| 148 | +add_executable(stereo_tum_vi |
| 149 | +Examples/Stereo/stereo_tum_vi.cc) |
| 150 | +target_link_libraries(stereo_tum_vi ${PROJECT_NAME}) |
| 151 | + |
| 152 | + |
| 153 | +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/Examples/Monocular) |
| 154 | + |
| 155 | +add_executable(mono_tum |
| 156 | +Examples/Monocular/mono_tum.cc) |
| 157 | +target_link_libraries(mono_tum ${PROJECT_NAME}) |
| 158 | + |
| 159 | +add_executable(mono_kitti |
| 160 | +Examples/Monocular/mono_kitti.cc) |
| 161 | +target_link_libraries(mono_kitti ${PROJECT_NAME}) |
| 162 | + |
| 163 | +add_executable(mono_euroc |
| 164 | +Examples/Monocular/mono_euroc.cc) |
| 165 | +target_link_libraries(mono_euroc ${PROJECT_NAME}) |
| 166 | + |
| 167 | +add_executable(mono_tum_vi |
| 168 | +Examples/Monocular/mono_tum_vi.cc) |
| 169 | +target_link_libraries(mono_tum_vi ${PROJECT_NAME}) |
| 170 | + |
| 171 | + |
| 172 | +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/Examples/Monocular-Inertial) |
| 173 | + |
| 174 | +add_executable(mono_inertial_euroc |
| 175 | +Examples/Monocular-Inertial/mono_inertial_euroc.cc) |
| 176 | +target_link_libraries(mono_inertial_euroc ${PROJECT_NAME}) |
| 177 | + |
| 178 | +add_executable(mono_inertial_tum_vi |
| 179 | +Examples/Monocular-Inertial/mono_inertial_tum_vi.cc) |
| 180 | +target_link_libraries(mono_inertial_tum_vi ${PROJECT_NAME}) |
| 181 | + |
| 182 | + |
| 183 | +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/Examples/Stereo-Inertial) |
| 184 | + |
| 185 | +add_executable(stereo_inertial_euroc |
| 186 | +Examples/Stereo-Inertial/stereo_inertial_euroc.cc) |
| 187 | +target_link_libraries(stereo_inertial_euroc ${PROJECT_NAME}) |
| 188 | + |
| 189 | + |
| 190 | +add_executable(stereo_inertial_tum_vi |
| 191 | +Examples/Stereo-Inertial/stereo_inertial_tum_vi.cc) |
| 192 | +target_link_libraries(stereo_inertial_tum_vi ${PROJECT_NAME}) |
| 193 | + |
| 194 | + |
0 commit comments