代码编译时出现No such file or directory #include “XXXXXX.h”
意思是没有找到该头文件
可能的原因是CMakeLists.txt由于路径原因没有正确的指向该文件,如果是自己建立的库可以用一下办法
解决办法是改写CMakeLists.txt
1.增加链接路径
首先从build文件夹中寻找对应的.cmake文件:build文件夹目录和src是一样的,跟据报错可以在src中找到存在问题的.cpp文件,去build找对应文件目录,应该是在pkgName/catkin_generated/installspace/pkaName.camke
在CMakeLists.txt加入.camke的文件路径,即set(CMAKE_FIND_ROOT_PATH pkgName/catkin_generated/installspace/)
set第二个参数可以写工程的绝对路径或者相对路径,绝对路径比较保险。
2.修改find_package
find_package里加入pkgName
即find_package(pointgrey_camera_driver)
3.修改include_directories和target_link_libraries
去第一步找到的.camke文件中寻找INCLUDE_DIRS和_LIBRARIES指向的文件夹变量名和动态链接库变量名,一般是pkgName_INCLUDE_DIRS和pkgName_LIBRARIES,然后在CMakeLists.txt的include_directories()和target_link_libraries()追加如下信息,要在CMakeLists.txt中这两个方法中追加信息,不要新建方法。
include_directories(include ${pkgName_INCLUDE_DIRS})
target_link_libraries(${pkgName_LIBRARIES})
其他可能的解决办法
1.如果.cpp文件中没有正确的#include也会导致这个问题,比如#include<cv.h>,解决办法如下
https://blog.csdn.net/yuteng12138/article/details/105204292
2.如果没有下载官方提供的功能包也会导致这类问题
解决办法是apt-cache search pkgName
,寻找包含pkgName的功能包并下载apt-get install pkgName