ROS:引用同一工作空间下其他包中的 .h 文件

引用同一工作空间下其他package的‘.h’文件,一种方法是创建library生成动态链接库‘.so’:
[1]https://answers.ros.org/question/33779/how-do-i-link-an-executable-with-library-in-other-package/?answer=33781#post-id-33781.
[2]https://blog.csdn.net/wawayu_0/article/details/79410237?utm_source=blogxgwz2.
[3]https://blog.csdn.net/Will_Ye/article/details/79587075.
另一种方法是直接引用‘.h’文件:
[1]https://blog.csdn.net/zhixiongning/article/details/81910857.
[2]http://question2464.rssing.com/browser.php?indx=39696734&item=61.

自己再整理一下步骤
B_package调用A_package中的‘.h’文件
A_package:
1、修改CMakeList.txt文件:

1)catkin_package(
INCLUDE_DIRS include
#LIBRARIES motordriver
#CATKIN_DEPENDS roscpp rospy std_msgs
#DEPENDS system_lib )

2)include_directories( include ${catkin_INCLUDE_DIRS} )

B_package:
1、修改package.xml文件(这项好像不修改也能编译成功):

    <build_depend>A_package</build_depend>

    <exec_depend>A_package</exec_depend>

2、修改CMakeList.txt文件:

    find_package( catkin REQUIRED COMPONENTS
    roscpp
    rospy
    std_msgs
    A_package ) (这一步很重要!!!)

    catkin_package( INCLUDE_DIRS include
    #LIBRARIES tracking
    #CATKIN_DEPENDS roscpp rospy std_msgs
    #DEPENDS system_lib ) (这一步好像也是不修改也OK)

    include_directories(include ${catkin_INCLUDE_DIRS})

3、然后B_package中的‘.cpp’文件引用的时候需要指出‘.h’文件的所属功能包:

#include <A_package/xx.h>

最后贴上自己当时遇到错误的提示与关键的修改:
错误1:Project ‘xxx’ tried to find library ‘A_package’. The library is neither a target nor built/installed properly. Did you compile project ‘A_package’? Did you find_package() it before the subdirectory containing its code is included?

在这里插入图片描述
修改:A_package的CMakeList.txt文件:
catkin_package(
INCLUDE_DIRS include
#LIBRARIES A_package (这里要注释掉)
CATKIN_DEPENDS roscpp rospy std_msgs message_runtime
DEPENDS system_lib )

错误2:fatal error: A_package/xx.h: 没有那个文件或目录

在这里插入图片描述
修改:需要被引用的‘.h’文件要放在A_package/include/A_package中。之前‘.h’放在A_package/include里导致一直报错说找不到。
---------------------  
作者:孔孩儿  
来源:CSDN  
原文:https://blog.csdn.net/weixin_43651761/article/details/85557291  
版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值