SLAM中CMakeLists常見庫的相關配置

SLAM中常用庫在CMakeLists.txt中的添加方法,不斷更新中…

(1)Eigen

include_directories( "/usr/include/eigen3" )

(2)PCL

find_package(PCL REQUIRED)
include_directories(${PCL_INCLUDE_DIRS})
LINK_DIRECTORIES(${PCL_LIBRARY_DIRS} )
add_definitions(${PCL_DEFINITIONS})

target_link_libraries(XXX ${PCL_LIBRARIES})

(3)OpenCV

find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})

target_link_libraries(XXX ${OpenCV_LIBS})

(4)G2O

find_package( G2O REQUIRED )
include_directories(${G2O_INCLUDE_DIRS} )

SET(G2O_LIBS g2o_cli g2o_ext_freeglut_minimal g2o_simulator g2o_solver_slam2d_linear 
    g2o_types_icp g2o_types_slam2d g2o_types_sba g2o_types_slam3d g2o_core g2o_interface 
    g2o_solver_csparse g2o_solver_structure_only g2o_csparse_extension g2o_opengl_helper g2o_solver_dense 
    g2o_stuff g2o_types_sclam2d g2o_parser g2o_solver_pcg g2o_types_data g2o_types_sim3 cxsparse )
    
target_link_libraries(XXX  ${G2O_LIBS})

(5)Sophus

find_package( Sophus REQUIRED )
include_directories( ${Sophus_INCLUDE_DIRS} )

target_link_libraries( XXX ${Sophus_LIBRARIES})

(6)Ceres

find_package( Ceres REQUIRED )
include_directories( ${CERES_INCLUDE_DIRS} )

target_link_libraries( XXX  ${CERES_LIBRARIES} )

(7)CSparse

find_package( CSparse REQUIRED )
include_directories( ${CSPARSE_INCLUDE_DIR} )

target_link_libraries( XXX  ${CSPARSE_LIBRARY})

(8)Cholmod

find_Package(Cholmod REQUIRED)
include_directories( ${CHOLMOD_INCLUDE_DIR} )

target_link_libraries( XXX  ${CHOLMOD_LIBRARIES})

(9)DBow3

set( DBoW3_INCLUDE_DIRS "/usr/local/include" )
set( DBoW3_LIBS "/usr/local/lib/libDBoW3.so" )

target_link_libraries( XXX ${DBoW3_LIBS} )

(10)Glog

find_package(Glog REQUIRED)
include_directories(${GLOG_INCLUDE_DIRS})

(11)Openmp

set(CMAKE_CXX_FLAGS "-std=c++11 -g -Wall")

FIND_PACKAGE( OpenMP REQUIRED)
if(OPENMP_FOUND)
    message("OPENMP FOUND")
    ADD_DEFINITIONS(-DUSE_OPENMP)
    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
    set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
endif()

其餘

1 包含cmake_modules文件夾中的FINDG2O.cmake才能夠找到G2O庫,CSparse庫也類似

list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake_modules)

2 將文件封裝成庫

set( G2O_LIBS g2o_core g2o_types_sba g2o_solver_csparse g2o_stuff g2o_csparse_extension )

3 設置可執行文件生成路徑

set( EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin )

4 設置庫文件生產路徑

set( LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib )

5 到對應子目錄中尋找CMakeLists.txt文件

add_subdirectory(文件夾名稱)

6 將.c文件打包爲庫文件

add_library(${PROJECT_NAME}_frontend
        frame.cc
        )

8 是否啓用單元測試

option(BUILD_TESTS "Build tests." TRUE)
if (BUILD_TESTS)
    enable_testing()
    add_subdirectory(tests)
endif()

相關優秀博客收藏:
https://www.cnblogs.com/rswss/p/9460139.html
https://blog.csdn.net/zhanghm1995/article/details/80902807###

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章