vins_estimator CMakeLists.txt
1.1 cmake_minimum_required(VERSION 2.8.3)
指定 cmake 的最小版本
1.2 project(vins)
设置项目名称为 vins
1.3 set(CMAKE_BUILD_TYPE “Release”)
Debug : 调试模式,输出调试信息,不做优化
Release: 发布模式,没有调试信息,全优化
set(CMAKE_BUILD_TYPE Debug) --> 设定编译类型为debug,调试时需要选择debug
set(CMAKE_BUILD_TYPE Release) -->发布时选择release
1.4 set(CMAKE_CXX_FLAGS “-std=c++11”)
在编译选项中加入c++11支持
1.5 set(CMAKE_CXX_FLAGS_RELEASE “-O3 -Wall -g”)
增加编译选项 -O3 -Wall -g
-Wall :编译过程中输出警告warnings
1.6 find_package(catkin REQUIRED )
find_package(catkin REQUIRED COMPONENTS
roscpp
std_msgs
geometry_msgs
nav_msgs
tf
cv_bridge
camera_models
image_transport)
加载catkin库,同时添加angles、roscpp、std_msgs等的依赖
A) FIND_PACKAGE( [version] [EXACT] [QUIET] [NO_MODULE] [ [ REQUIRED | COMPONENTS ] [ componets… ] ] )
用来调用预定义在 CMAKE_MODULE_PATH 下的 Find.cmake 模块。
也可以自己定义 Find模块,将其放入工程的某个目录中,通过 SET(CMAKE_MODULE_PATH dir)设置查找路径,供工程FIND_PACKAGE使用。
B) REQUIRED 参数
其含义是指是否是工程必须的,表示如果报没有找到的话,cmake的过程会终止,并输出警告信息。对应于Find.cmake模块中的 NAME_FIND_REQUIRED 变量。
C) COMPONENTS参数
在REQUIRED选项之后,或者如果没有指定REQUIRED选项但是指定了COMPONENTS选项,在它们的后面可以列出一些与包相关(依赖)的部件清单(components list)
1.7 find_package(OpenCV REQUIRED)
加载OPENCV
1.8 find_package(Ceres REQUIRED)
加载Ceres
1.9 include_directories(${catkin_INCLUDE_DIRS} ${CERES_INCLUDE_DIRS})
添加头文件路径
2.0 set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
PROJECT_SOURCE_DIR是指当前CMakeLists.txt所在的文件路径( 我的电脑里是 /home/yang/catkin_ws/src/VINS-Fusion/vins_estimator )
则把 CMAKE_MODULE_PATH设置成/home/yang/catkin_ws/src/VINS-Fusion/vins_estimator/cmake
2.1 find_package(Eigen3)
加载Eigen3
2.2 include_directories( ${catkin_INCLUDE_DIRS} ${EIGEN3_INCLUDE_DIR} )
添加头文件路径
2.3 catkin_package()
catkin_package()是catkin提供的CMake宏,用于为catkin提供构建、生成pkg-config和CMake文件所需要的信息。
2.4 add_library(vins_lib)
add_library(vins_lib
src/estimator/parameters.cpp
src/estimator/estimator.cpp
src/estimator/feature_manager.cpp
src/factor/pose_local_parameterization.cpp
src/factor/projectionTwoFrameOneCamFactor.cpp
src/factor/projectionTwoFrameTwoCamFactor.cpp
src/factor/projectionOneFrameTwoCamFactor.cpp
src/factor/marginalization_factor.cpp
src/utility/utility.cpp
src/utility/visualization.cpp
src/utility/CameraPoseVisualization.cpp
src/initial/solve_5pts.cpp
src/initial/initial_aligment.cpp
src/initial/initial_sfm.cpp
src/initial/initial_ex_rotation.cpp
src/featureTracker/feature_tracker.cpp)
添加这些库文件,这些库是程序需要使用的,命名为vins_lib
2.5 target_link_libraries(vins_lib ${catkin_LIBRARIES} ${OpenCV_LIBS} ${CERES_LIBRARIES})
给库vins_lib添加库链接
2.6 add_executable(vins_node src/rosNodeTest.cpp)
用源文件rosNodeTest.cpp生成可执行文件vins_node
2.7 target_link_libraries(vins_node vins_lib)
给可执行文件vins_node添加库链接vins_lib
2.8 add_executable(kitti_odom_test src/KITTIOdomTest.cpp)
用源文件KITTIOdomTest.cpp生成可执行文件kitti_odom_test
2.9 target_link_libraries(kitti_odom_test vins_lib) **
给可执行文件kitti_odom_test添加库链接vins_lib
3.0 add_executable(kitti_gps_test src/KITTIGPSTest.cpp)
用源文件KITTIGPSTest.cpp生成可执行文件kitti_gps_test
3.1 target_link_libraries(kitti_gps_test vins_lib)
给可执行文件kitti_gps_test添加库链接vins_lib