如何解决CMake Error: The source directory“xxxx”does not exist

本文指导如何解决初学者在ROS中遇到的工作空间路径改变导致的编译错误,包括查找新路径、修改Makefile、删除缓存文件并重新编译的过程。

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

问题说明:初学ROS的时候可能经常会搬运别人的工作空间直接使用,或者将自己这台电脑上的工作空间复制粘贴到另一台电脑上,但是直接使用catkin_make来进行编译会出现CMake Error: The source directory ““ does not exist的错误

看到有一些回答说将工作空间build文件夹下CMakeCache.txt和src文件夹下的CMakeLists.txt删除之后重新编译,但还是报错。

后来就自己分析错误在说啥,这应该是说这个工作空间之前的路径不存在了,因为我们的工作空间在现在电脑上路径已经变了

解决方法:

先看一下现在工作空间放在了什么路径下

然后进入工作空间下的build文件夹,打开Makefile文件,将红框里面那两个路径改成现在的,保存(我是在vscode里操作的,因为各级目录看起来比较直观,直接在终端操作也行);

再用catkin_make编译,就成功了。

(不过我这么做之前build文件夹下CMakeCache.txt和src文件夹下的CMakeLists.txt已经被我删了,所以不知道不删能不能成功,建议还是删一下)

引用\[1\]:笔者手比较贱,直接删了opencv里面的lib,直接删了废纸篓里的文件,没在终端卸载。要重新下一次,然后brew啥也下不了,brewinstall xxx直接报出这个错误Error: No such file or directory - /usr/local/var/homebrew/linked/xxx,解决办法是删除系统目录下的var里面的homebrew,我电脑的路径是/usr/local/var/homebrew,该文件里面全是要下载包时建立的软连接,无图无真相,贴图看看效果: 。\[1\] 引用\[2\]:问题说明:初学ROS的时候可能经常会搬运别人的工作空间直接使用,或者将自己这台电脑上的工作空间复制粘贴到另一台电脑上,但是直接使用catkin_make来进行编译会出现CMake Error: The source directory ““ does not exist的错误 。\[2\] 引用\[3\]:出现这种问题是说明没有找到相关的文件,例如: <gio/gio.h> No such file or directory 查看CMakeLists.txt, 发现包含的该头文件确实没有 include 进去 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/_dev-fs/usr/include/libmm-glib)include_directories(${CMAKE_CURRENT_SOURCE_DIR}/_dev-fs/usr/include/ModemManager)include_directories(${CMAKE_CURRENT_SOURCE_DIR}/_dev-fs/usr/include/libnm) 后加入 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/_dev-fs/usr/include/gio) 这个文件夹是确实存在的,里面的gio.h也存在,但是还是报同样的问题,弄了半天都卡在这里了,结果最后发现应该是路径上的问题, 应为在预处理依赖头文件的过程中是按照你加入的路径去找的(<gio/gio.h> 前面有个文件夹gio),也就是include_directories 进去目录是作为寻找的根目录,也就是起始目录, 结果找到的是 .../_dev-fs/usr/include/gio/gio/gio.h, 这个路径当然不存在,所有应该是加入 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/_dev-fs/usr/include) 即路径是 .../_dev-fs/usr/include/gio/gio.h 这样就可以找到了,问题解决!!!!!!!!!!!!!!!!! 转载于:https://www.cnblogs.com/Jokeyyu/p/9046022.html。\[3\] 问题:\[Errno 2\] No such file or directory: '/home/neousys/.local/bin/cmake': '/home/neousys/.local/bin/cmake' 回答: 这个错误通常是由于找不到指定的文件或目录引起的。根据引用\[1\]中的描述,可能是由于删除了系统目录下的var里面的homebrew导致的。你可以尝试重新安装homebrew并删除之前的软连接来解决这个问题。另外,根据引用\[2\]和引用\[3\]的描述,这个错误也可能是由于路径问题引起的。你可以检查路径是否正确,并确保相关文件或目录存在。如果路径有误,你可以尝试修改路径或添加正确的路径来解决问题。 #### 引用[.reference_title] - *1* [用homebrew下载cmake时出现Error: No such file or directory - /usr/local/var/homebrew/linked/cmake错误解决办法](https://blog.csdn.net/weixin_58475035/article/details/121887480)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [如何解决CMake Error: The source directoryxxxxdoes not exist](https://blog.csdn.net/intfloatchar/article/details/125139309)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [cmake 成功后, make 出现 No such file or directory 问题解决](https://blog.csdn.net/banpozhi3270/article/details/101074058)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值