在学到建立各种ROS功能包的时候,需要写各种包package.xml,除了路径不同名字很相似,所以就搞混了。导致写代码时手贱把功能包的文件内容写到了src文件夹下。之后再编译功能包就出现了报错,内容如下:
CMake Error at /opt/ros/melodic/share/catkin/cmake/catkin_workspace.cmake:121 (add_subdirectory):
add_subdirectory not given a binary directory but the given source
directory "/home/steve/catkin_ws/src" is not a subdirectory of
"/home/steve/catkin_ws/src".
使用网上的方法都不是很管用,据说是要添加绝对路径.不过再改动这个.xml文件之前,我的编译从来没出现这样的错误.所以可能和改动有关.
解决方法:
1.把功能包复制粘贴到catkin_ws外的一个新的文件夹内(备份)
2.删除整个catkin_ws
3.重新建立一个catkin_ws工作区,代码这里就不贴出来了,学过ROS的应该都懂
4.配置环境,把功能包移入新工作区的src内
5.打开终端,重新编译
cd ~/catkin_ws && catkin_make
如果进程没有报错,则问题解决.
至于如果删除了CmakeLists.txt,那么很遗憾,可能需要重装系统.不过好心人给了源文件,不妨一试:
https://blog.csdn.net/weixin_44741023/article/details/91467907