SLAM相关CMakeLists.txt文件写法——学习笔记

本文详细介绍了在SLAM项目中如何正确配置CMakeLists.txt文件,包括设置项目基本信息、链接OpenCV、Eigen、G2O等库的具体步骤。通过遵循本文指导,读者可以快速掌握SLAM项目构建过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SLAM相关CMakeLists.txt文件写法——学习笔记

链接CMakeLists.txt文件语法含义
参考高翔《视觉SLAM十四讲》

1、通用(头)

cmake_minimum_required( VERSION 2.8 )
project( 工程名)
set( CMAKE_BUILD_TYPE "Debug" )

2、OpenCV

find_package( OpenCV 版本号 REQUIRED )//OpenCV大小写不可错,版本号根据安装版本来写,我的是3.4.4
include_directories( ${OPENCV_INCLUDE_DIRS} )//大括号内大小写均可

3、Eigen

include_directories( "/usr/include/eigen3/" )//纯头文件库,不需要链接库文件

4、G2O

list( APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake_modules )
find_package( G2O REQUIRED )
find_package( CSparse REQUIRED )
include_directories( ${G2O_INCLUDE_DIRS} ${ CSparse_INCLUDE_DIR } )

5、通用(尾)

add_executable( 可执行文件名 main函数.cpp )
target_link_libraries( 可执行文件名   ${OpenCV_LIBS} //大小敏感
															g2o_core g2o_stuff g2o_types_sba g2o_csparse_extension //g2o文件夹下的子文件夹
															${CSPARSE_LIBS}	

<think>嗯,用户遇到了ORB_SLAM3在编译时因为Vocabulary目录缺少CMakeLists.txt文件而导致的CMake错误。我需要帮他们解决这个问题。首先,我得回想一下ORB_SLAM3的目录结构。通常,Vocabulary文件夹里面存放的是词袋文件,比如.txt或者.bin格式的,这些是预先训练好的,不需要编译。所以可能这个目录本来就没有CMakeLists.txt,用户可能误解了需要这个文件。 接下来,用户可能在执行cmake时遇到了错误,提示找不到CMakeLists.txt。这时候需要检查CMake命令是否正确,特别是构建目录是否指向正确的路径。常见的错误可能是用户在错误的目录下运行cmake,比如直接进入Vocabulary目录尝试编译,但实际上应该是在项目的根目录或者build目录下运行。 另外,可能用户没有正确克隆子模块,比如DBoW2和g2o,这些子模块可能包含必要的构建文件。需要提醒用户使用git submodule update --init来确保所有依赖都被正确下载。 还有可能是用户手动移动了Vocabulary文件,导致路径错误。应该建议用户不要手动修改文件结构,而是按照官方文档的步骤进行操作。此外,修改主CMakeLists.txt文件,跳过对Vocabulary目录的处理,可能也是一个解决办法,比如使用if(NOT EXISTS)来避免cmake处理不存在的CMakeLists.txt。 最后,需要确认用户是否按照官方文档的步骤进行编译,比如正确的构建顺序和环境配置,比如安装依赖库、设置OpenCV路径等。如果这些步骤有误,也可能导致其他问题,需要综合检查。</think>### 解决ORB_SLAM3 Vocabulary目录缺少CMakeLists.txt的CMake错误 #### 1. 问题根源分析 ORB_SLAM3的`Vocabulary`目录本身**不需要**包含`CMakeLists.txt`文件。该目录仅存放预编译词袋文件(如`ORBvoc.txt`或`ORBvoc.bin`),CMake构建过程中会直接调用这些文件。出现此错误通常由以下原因导致: 1. 用户错误地在`Vocabulary`目录内执行了CMake命令 2. 项目根目录的`CMakeLists.txt`错误地引用了子目录 3. 项目克隆不完整导致文件缺失 #### 2. 解决方案步骤 **步骤1:验证目录结构** 确保项目结构符合标准布局: ``` ORB_SLAM3/ ├── CMakeLists.txt # 主构建文件 ├── Vocabulary/ │ └── ORBvoc.txt # 词袋文件(无需编译) ├── Thirdparty/ # 依赖库 ├── src/ # 源代码 └── build/ # 建议的构建目录 ``` **步骤2:修正构建命令** 在**项目根目录**新建构建目录并执行: ```bash mkdir build && cd build cmake .. -DCMAKE_BUILD_TYPE=Release make -j4 ``` 若使用ROS版本,应进入`Examples/ROS/ORB_SLAM3`目录执行构建[^4] **步骤3:修复文件依赖(可选)** 若主`CMakeLists.txt`包含对Vocabulary目录的无效引用,在`ORB_SLAM3/CMakeLists.txt`中添加: ```cmake # 跳过不存在的子目录构建 if(NOT EXISTS ${PROJECT_SOURCE_DIR}/Vocabulary/CMakeLists.txt) message(STATUS "Skipping Vocabulary directory") endif() ``` #### 3. 补充建议 1. 确保完整克隆仓库: ```bash git clone --recursive https://github.com/UZ-SLAMLab/ORB_SLAM3.git ``` 2. 若手动添加词袋文件,需保证文件路径正确: ```cmake # 在主CMakeLists.txt中验证文件存在性 if(EXISTS ${PROJECT_SOURCE_DIR}/Vocabulary/ORBvoc.txt) message(STATUS "Vocabulary found") else() message(FATAL_ERROR "Missing ORBvoc.txt! Download from official repo") endif() ``` #### 4. 相关环境配置 若同时出现OpenCV版本错误,参考以下配置[^3]: ```cmake # 在对应CMakeLists.txt中添加 set(OpenCV_DIR "/usr/local/share/opencv4") # 适配你的安装路径 find_package(OpenCV 4.4 REQUIRED) # 强制要求最低版本 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值