基础部分

前言

ORBSLAM2和ORBSLAM3注释版github链接https://github.com/electech6

SLAM基础

由于已经看过SLAM14讲,故删繁就简,看一部份

CMAKE相关

指令

常用的比较重要的指令

# 指定要求最小的CMake版本,
cmake_minimum_required(VERSION 3.10)

# 设置当前项目名称
project(test)

# 指定头文件搜索路径,方便编译器找到头文件
include_directories(

)

# 设置用变量替换值
set(variable value)

# 用指定的源文件为工程添加可执行文件
add_executable(hello main.cpp)

# 将指定的源文件生成链接库文件, STATIC表示静态链接库, SHARED表示动态链接库
add_library(libname STATIC/SHARED sources)

# 为库或二进制文件添加链接库
target_link_libraries(target library1 library2...)

# 向当前工程中添加文件的子目录,目录可以是相对路径或绝对路径
add_subdirectory(source_dir)

# 遍历目录下的所有源文件
aux_source_directory(dir varname)

# 打印信息
message(mode "message text")
# mode 包括 STATUS、WARNING、ERROR、FATAL_ERROR、SEND_ERROR、

# 搜索第三方库
find_package(packageName version EXACT/QUIET/REQUIRED)
# 后面是三个参数,EXACT表示精确匹配,QUIET表示不输出任何信息,REQUIRED表示如果没有找到,则报错
# 当find_package 找到一个库时,以下变量会自动初始化,NAME 表示库的名字
# <NAME>_FOUND 显示是否找到库的标记
# <NAME>_INCLUDE_DIRS 包含库的头文件路径  或  <NAME>_INCLUDES
# <NAME>_LIBRARIES 包含库的链接库路径  或  <NAME>_LIBS

# 列表操作(读,搜索,修改,排序)
list()
# 追加例子:LIST(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake_modules)

# 条件语句
if elseif endif
# 循环语句
foreach()  endforeach()

Cmake 中一些常用的、预定义的变量如下

PROJECT_NAME:		工程名称,替代project(name)中的name
PROJECT_SOURCE_DIR:	工程路径,通常是包含project指令的CMakeLists.txt文件所在的路径
EXECUTABLE_OUTPUT_PATH:可执行文件输出路径
LIBRARY_OUTPUT_PATH:	库文件输出路径
CMAKE_BINARY_DIR:		默认是 build 文件夹所在的绝对路径
CMAKE_SOURCE_DIR:		源文件所在的绝对路径

使用find_package指令,自动查询package安装位置,方便别人移植。

#在使用 find_package 指令的情况下自动指定路径
#,查找计算机中已经安装的 Pangolin 库
find_package(Pangolin REOUIRED)
#自动将找到的 Pangolin 库中头文件的路径添加到工程中include_directories(S{Pangolin_INCLUDE_DIRS})
include_directories(S{Pangolin_INCLUDE_DIRS})
#自动将找到的 Pangolin 库文件链接到工程中target_link_libraries(mydemo ${Pangolin_LIBRARIES} )
target_link_libraries(mydemo ${Pangolin_LIBRARIES} )

注意事项

  • CMake 指令不区分大小写
  • 参数和变量名称,,严格区分大小写,引用变量的形式为${ }。
    • 可以这样搞,set命名一变量,包含多个路径。然后target_link_libraries直接link这里

管理方法

两种方法管理

  • 工程存在多个目录,只使用一个 CMakeLists.txt 文件来管理
    • 中央集权型,
  • 工程存在多个目录,每一个源文件目录都使用一个CMakeLists.txt 文件来管理
    • 区域自治型,
posted @ 2024-07-03 22:51  万古长夜温剑神  阅读(4)  评论(0编辑  收藏  举报