cmake_minimum_required(VERSION 2.8) project(ORB_SLAM2) 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 -march=native -Wno-unused-function -Wno-return-type") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -O3 -march=native -Wno-unused-function -Wno-return-type") # set carv needed flags set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__STDC_CONSTANT_MACROS -DGL_GLEXT_PROTOTYPES -D_LINUX -D_REENTRANT -DCGAL_USE_F2C -DCGAL_DISABLE_ROUNDING_MATH_CHECK") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STDC_CONSTANT_MACROS -DGL_GLEXT_PROTOTYPES -D_LINUX -D_REENTRANT -DCGAL_USE_F2C -DCGAL_DISABLE_ROUNDING_MATH_CHECK") # Check C++11 or C++0x support 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") add_definitions(-DCOMPILEDWITHC11) message(STATUS "Using flag -std=c++11.") 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) find_package(OpenCV 3.0 QUIET) if(NOT OpenCV_FOUND) find_package(OpenCV 2.4.3 QUIET) if(NOT OpenCV_FOUND) message(FATAL_ERROR "OpenCV > 2.4.3 not found.") endif() endif() message(STATUS "Using opencv version ${OpenCV_VERSION}") find_package(Eigen3 3.1.0 REQUIRED) find_package(Pangolin REQUIRED) # find openmp find_package(OpenMP) if (OPENMP_FOUND) message("-- OpenMP found") set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") endif() # Find CGAL set(CMAKE_BUILD_TYPE_BACKUP ${CMAKE_BUILD_TYPE}) set(CMAKE_BUILD_TYPE "Release") find_package(CGAL REQUIRED COMPONENTS Core) include( ${CGAL_USE_FILE} ) set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE_BACKUP}) # Find Boost find_package(Boost REQUIRED) include_directories(${Boost_INCLUDE_DIR}) link_directories(${Boost_LIBRARY_DIR}) # BLAS and LAPACK find_package(LAPACK REQUIRED) link_directories(${LAPACK_LIBRARY_DIR}) include_directories( ${PROJECT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/include ${EIGEN3_INCLUDE_DIR} ${Pangolin_INCLUDE_DIRS} ${PROJECT_SOURCE_DIR}/Thirdparty/Line3Dpp ${PROJECT_SOURCE_DIR}/Thirdparty/Line3Dpp/build ${PROJECT_SOURCE_DIR}/Thirdparty/EDTest ) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib) add_library(${PROJECT_NAME} SHARED src/System.cc src/Tracking.cc src/LocalMapping.cc src/LoopClosing.cc src/ORBextractor.cc src/ORBmatcher.cc src/FrameDrawer.cc src/Converter.cc src/MapPoint.cc src/KeyFrame.cc src/Map.cc src/MapDrawer.cc src/Optimizer.cc src/PnPsolver.cc src/Frame.cc src/KeyFrameDatabase.cc src/Sim3Solver.cc src/Initializer.cc src/Viewer.cc src/ProbabilityMapping.cc src/Modeler.cc src/LineDetector.cc src/CARV/FreespaceDelaunayAlgorithm.cc src/CARV/GraphWrapper_Boost.cc src/CARV/lovimath.cc src/CARV/SFMTranscript.cpp src/CARV/SFMTranscriptInterface_Delaunay.cpp src/CARV/Matrix.cc src/CARV/StringFunctions.cpp src/CARV/Exception.cpp src/CARV/SFMTranscriptInterface_ORBSLAM.cpp src/Object.cc # NOTE [EAO-SLAM] #src/G2OObject.cc # NOTE [EAO-SLAM] for optimization. # [EAO-SLAM] src/line_detect/line_lbd_allclass.cpp # [EAO-SLAM] src/line_detect/libs/binary_descriptor.cpp src/line_detect/libs/binary_descriptor_matcher.cpp src/line_detect/libs/LSDDetector.cpp src/line_detect/libs/lsd.cpp src/line_detect/libs/bitarray.hpp src/line_detect/libs/bitops.hpp src/line_detect/libs/draw.cpp src/line_detect/libs/precomp.hpp src/line_detect/libs/types.hpp # [EAO-SLAM] src/detect_3d_cuboid/box_proposal_detail.cpp src/detect_3d_cuboid/object_3d_util.cpp src/detect_3d_cuboid/matrix_utils.cpp ) 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 ${PROJECT_SOURCE_DIR}/Thirdparty/EDLines/EDLinesLib.a ${PROJECT_SOURCE_DIR}/Thirdparty/EDTest/EDLib.a ${PROJECT_SOURCE_DIR}/Thirdparty/Line3Dpp/build/libline3Dpp.so boost_system boost_filesystem boost_serialization lapack blas ) # Build 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}) # 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}) 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(LineAlignment # Examples/Monocular/LineAlignment.cc) # target_link_libraries(LineAlignment ${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}) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/tools) add_executable(bin_vocabulary tools/bin_vocabulary.cc) target_link_libraries(bin_vocabulary ${PROJECT_NAME})