记录一个cmake编译过程中的问题:fatal error: 3rdparty/DBoW2/DBoW2/FORB.h: No such file or directory

在进行cmake编译时出现了以下报错,提示找不到某个头文件

 fatal error: 3rdparty/DBoW2/DBoW2/FORB.h: No such file or directory
 #include"3rdparty/DBoW2/DBoW2/FORB.h"

但是在vscode中通过Ctrl+鼠标右键是可以成功跳转到对应的文件中去的,遂定位到CMakeLists.txt文件中.

原因分析

在使用第三方库时,头文件路径和CMakeLists.txt中include_directories中的路径要对的上

举个栗子来说,某个头文件完整的路径为${PROJECT_SOURCE_DIR}/3rdparty/DBoW2/DBoW2/FORB.h

在代码文件包含头文件时如果写到3rdparty/DBoW2/DBoW2/FORB.h,那么要想让编译器找到该头文件,CMakeLists.txt中的路径就写到${PROJECT_SOURCE_DIR}就可以了,即include_directories(${PROJECT_SOURCE_DIR})

这样在编译时根据CMakeLists.txt会去${PROJECT_SOURCE_DIR}目录下寻找3rdparty/DBoW2/DBoW2/FORB.h
在这里插入图片描述
在这里插入图片描述

那如果CMakeLists.txt中的路径写成了${PROJECT_SOURCE_DIR}/3rdparty,代码文件中的头文件路径是3rdparty/DBoW2/DBoW2/FORB.h就会发生报错,

因为在${PROJECT_SOURCE_DIR}/3rdparty目录下找不到3rdparty/DBoW2/DBoW2/FORB.h这个头文件

猜你喜欢

转载自blog.csdn.net/guanjing_dream/article/details/130744976