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###