以slambook-master/project/0.2 工程為例理解CMAKELISTS.TXT
阿新 • • 發佈:2018-11-19
cmake_minimum_required( VERSION 2.8 )
project ( myslam )
set( CMAKE_CXX_COMPILER "g++" )
set( CMAKE_BUILD_TYPE "Release" )
set( CMAKE_CXX_FLAGS "-std=c++11 -march=native -O3" )
#PROJECT_SOURCE_DIR為工程的根目錄
#cmake_modules裡面存放自動獲取依賴庫的路徑資訊
list( APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake_modules )
set( EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin )
set( LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib )
############### dependencies 依賴關係######################
#include_directories:新增標頭檔案路徑
# Eigen
include_directories( "/usr/include/eigen3" )
# OpenCV
find_package( OpenCV 3.1 REQUIRED )
include_directories ( ${OpenCV_INCLUDE_DIRS} )
#include_directories( "/usr/local/include/opencv" )
#include_directories( "/usr/local/include")
#通過find_package( OpenCV 3.1 REQUIRED ),輸出CMAKE為你找到的有關OPENCV的資訊
message(STATUS "OpenCV library status:")
message(STATUS " version: ${OpenCV_VERSION}")
message(STATUS " libraries: ${OpenCV_LIBS}" )
message(STATUS " include path: ${OpenCV_INCLUDE_DIRS}")
# Sophus
find_package( Sophus REQUIRED )
include_directories( ${Sophus_INCLUDE_DIRS} )
message(STATUS "Sophus library status:")
message(STATUS " version: ${Sophus_VERSION}")
message(STATUS " libraries: ${Sophus_LIBRARIES}")
message(STATUS " include path: ${Sophus_INCLUDE_DIRS}")
# G2O
find_package( G2O REQUIRED )
include_directories( ${G2O_INCLUDE_DIRS} )
set( THIRD_PARTY_LIBS
${OpenCV_LIBS}
${Sophus_LIBRARIES}
g2o_core g2o_stuff g2o_types_sba
)
############### 新增工程的.cpp source 以及自己建立的.h 庫 ######################
include_directories( ${PROJECT_SOURCE_DIR}/include )
add_subdirectory( src )
add_subdirectory( test )