假设我们要在a_package中引用b_package里自定义的my_message.msg.
方法1: 可直接通过添加依赖的方式解决.
首先在创建包时添加b_package:
catkin_create_pkg std_msgs roscpp rospy b_package
然后通过以下命令编译b_package:
catkin_make -DCATKIN_WHITELIST_PACKAGES='b_package'
之后在a_package中新建的程序此时便可以自动加载出msg文件所对应的头文件了.
最后,全局编译整个工作空间:
catkin_make -DCATKIN_WHITELIST_PACKAGES=''
注:方法1暂未实践
方法2: 手动修改A_package文件夹中的CMakeLists.txt和package.xml文件
首先在a_package的CMakeLists.txt文件中的find_package部分添加b_package:
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
b_package #添加这一条
)
然后将以下代码取消注释(删除#):
include_directories(
include
${catkin_INCLUDE_DIRS}
)
然后在package.xml文件中添加以下代码,注意需要根据实际情况按相应的格式配置:
<build_depend>b_package</build_depend>
<build_export_depend>b_package</build_export_depend>
<exec_depend>b_package</exec_depend>
之后,我们需要先编译要引用文件的功能包b_package.只要编译过就行,不一定要使用以下命令:
catkin_make -DCATKIN_WHITELIST_PACKAGES='b_package'
最后编译a_package即可.
注:方法2已实践有效
参考博客: https://blog.csdn.net/weixin_43455581/article/details/96168042
原文链接:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)