CMakeLists.txt 5.1 KB

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