darknet_ros编译错误CMake Error at /usr/share/cmake-3.5/Modules/FindCUDA.cmake:1649问题解决办法

在进行基于ROS的毕业设计时,使用darknet_ros进行目标识别,遇到CMake编译错误。错误源于文件缺失。解决方法包括删除原有项目文件夹,通过特定命令重新clone项目,然后执行catkin_make -DCMAKE_BUILD_TYPE=Release以成功编译。

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

最近在研究基于计算机视觉和深度学习的目标识别技术做毕业设计,用到了darknet在ROS操作系统中的版本darknet_ros,在ROS系统下使用YOLO算法进行目标识别。
在编译darknet_ros时报出一个很少见的错误,经过多方查找求证终于将问题解决,特此与大家分享,希望能帮助遇到同样问题的朋友。

执行代码:

catkin_make -DCMAKE_BUILD_TYPE=Release

报错(如图):

CMake Error at /usr/share/cmake-3.5/Modules/FindCUDA.cmake:1649 (add_library): 
  Cannot find source file:
    DARKNET_PATH-NOTFOUND/src/activation_layer.c

在这里插入图片描述
错误产生原因:

git clone https://github.com/leggedrobotics/darknet_ros.git

不知道为什么,这样clone的项目中会有文件缺失,导致报错。

错误解决办法:
1.删除已clone到电脑中的darknet_ros文件夹
2.在需要clone darknet_ros项目的文件夹中执行以下命令重新clone项目

git clone --recursive git@github.com:leggedrobotics/darknet_ros.git

在这里插入图片描述
此时再次执行catkin_make -DCMAKE_BUILD_TYPE=Release进行编译,即可正常完成编译!

### 解析 CMake 构建 `darknet_ros` 时无法找到源文件的解决方案 当遇到 `CMake Error at ... add_library cannot find source file` 错误时,通常意味着指定路径下的源文件不存在或者路径设置不正确。对于 `DARKNET_PATH-NOTFOUND/src/activation_layer.c` 文件未找到的情况,可以考虑以下几个方面来解决问题。 #### 验证环境变量配置 确保 `DARKNET_PATH` 环境变量已正确定义,并指向正确的 Darknet 安装目录。如果此变量未定义或指向错误位置,则可能导致 CMake 无法定位所需的源代码文件[^1]。 #### 更新项目依赖关系 有时克隆仓库后可能缺少必要的子模块或其他资源,这可能会引起编译失败。建议按照官方指南重新拉取最新版本的代码库,并初始化所有Git 子模块: ```bash git submodule update --init --recursive ``` 此外,在某些情况下,使用特定分支或标签也可能有助于避开潜在的问题版本[^2]。 #### 调整 CUDA 版本兼容性 考虑到部分错误可能是由于 GPU 或者 CUDA 设置不当引起的,确认当前系统的 CUDA 和 cuDNN 版本是否满足 `darknet_ros` 的最低需求。过高的硬件规格反而会引发不必要的麻烦;适当降低目标架构或许能绕过一些棘手问题[^3]。 #### 修改 CMakeLists.txt 中的路径设定 仔细检查项目的 `CMakeLists.txt` 文件,特别是那些涉及外部库导入的部分。如果有硬编码式的绝对路径存在,尝试将其替换为相对路径或是通过宏定义的方式动态获取实际路径[^5]。 #### 参考成功案例分享的经验 网络上已有不少开发者遇到了相似的问题并找到了各自的解决方法。查阅相关论坛帖子和技术博客中的讨论记录往往能够提供额外的帮助和启发[^4]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值