CMakeLists.txt 编写说明

对自己在学习SLAM、C++过程中遇到的编写规律进行总结,希望可以帮到大家。

1. 声明最小版本需求

cmake_minimum_required(VERSION xxx)

2. 设置项目名称

project(xxx)

3. 通过设置变量CMAKE_BUILD_TYPE来配置编译类型(Debug、Release……)

set(CMAKE_BUILD_TYPE Debug)

4. 通过设置变量CMAKE_CXX_FLAGS来设置编译选项

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

5.引入第三方库

find_package 命令:在目录中查找相关配置文件,将头文件目录设置到 ${xxx_INCLUDE_DIRS} 中,将链接库设置到 ${xxx_LIBS} 中。

include_directories命令:给编译器提供头文件配置。

一般情况下(在引入第三方库)上述两命令配合使用。

# Eigen 库
include_directories("/usr/include/eigen3")

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

# Opencv 库
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})

# g2o 库
find_package(G2O REQUIRED)
include_directories(${G2O_INCLUDE_DIRS})

6. 生成可执行文件

add_executable(demo demo.cpp)

7. 链接第三方库

target_link_libraries(demo ${OpenCV_LIBS})

 在引入第三方库时,“find_package”、“include_directories”、 “ target_link_libraries” 三条命令经常一同使用

8. 源文件中包含自定义函数的调用时

add_executable(demo demo.cpp function.cpp)
include_directories(.)

其中demo.cpp即为主文件,function.cpp为主文件中调用的函数文件。

include_directries后填写function.h文件的路径。


CMakeList.txt 简单示例

cmake_minimum_required(VERSION 2.8)
# 声明camke最小版本需求

project(useEigen)
# 设置项目名称

set(CMAKE_BUILD_TYPE "Release")
set(CMAKE_CXX_FLAGS "-O3")
#编译相关选项设置

include_directories("/usr/include/eigen3")
# 添加Eigen头文件

add_executable(eigenMatrix eigenMatrix.cpp)
#生成可执行文件

CMakeList.txt 常见错误

1. CMakeLists.txt 文件名出错,无法识别

2. 编译相关设置问题

3. 第三方软件库链接出错

猜你喜欢

转载自blog.csdn.net/weixin_43725910/article/details/127276997