ROS自定义msg、srv, 编译时找不到相关头文件

当有多个ROSpackage且包含自定义消息或服务时,可能出现编译错误。原因是编译顺序不正确。解决方法是在使用这些消息或服务的包的CMakeLists.txt中添加add_dependencies指令,确保编译器按照正确的顺序处理依赖。这样可以保证在编译目标时,其依赖的其他目标已经先被编译。
摘要由CSDN通过智能技术生成

在我们拥有多个package的时候,我们定义了一个消息或者服务,并在代码中使用了这个消息或者服务。如果是单独编译这个包,编译 通过。但是如果是多个包一起编译,就会出现找不到相关头文件的错误。

原因: 编译时未按照严格顺序进行编译

解决办法:在使用自定义消息或者服务的包中,修改CMakeLists.txt,增加如下内容

add_dependencies(some_target ${${PROJECT_NAME}_EXPORTED_TARGETS})

作用:让编译器知道,编译some_target时,需要注意编译顺序

参考链接:ROS catkin CMakeList.txt: http://wiki.ros.org/catkin/CMakeLists.txt

原文链接:https://blog.csdn.net/kl1125290220/article/details/86489074

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值