当前位置: 首页> 教育> 培训 > 免费的舆情网站不用下载直接打开_招商加盟网站建设_凡科建站快车_seo工具

免费的舆情网站不用下载直接打开_招商加盟网站建设_凡科建站快车_seo工具

时间:2025/7/11 15:06:58来源:https://blog.csdn.net/AbaAbaxxx_/article/details/147117435 浏览次数:0次
免费的舆情网站不用下载直接打开_招商加盟网站建设_凡科建站快车_seo工具

【ROS】软件包后期添加依赖

  • 前言
  • 整体思路
  • 修改 package.xml
    • 1. 构建依赖(build_depend)
    • 2. 构建导出依赖(build_export_depend)
    • 3. 运行依赖(exec_depend)
    • 如何修改
  • 修改 CMakeLists.txt
    • 修改 find_package
    • 其他修改

前言

在创建 ROS 软件包时,通常会一次性添加好所需的依赖项。但在开发过程中,常常会临时需要用到新的消息类型或功能包,这时就需要给已有的软件包手动添加新的依赖项。

我们不能像最初创建时那样用命令添加,而是要通过修改配置文件来完成。下面就以 nav_msgs 为例,讲解如何添加新的依赖包。


整体思路

要为已有的 ROS 软件包添加依赖项,首先需要知道这些依赖是在哪里声明的。

在 ROS 的功能包中,依赖项主要出现在两个文件中:package.xmlCMakeLists.txt

  • package.xml 用来声明该功能包需要哪些依赖项;
  • CMakeLists.txt 用来在编译时实际使用这些依赖。

前者相当于告诉ROS系统“我需要什么”,后者是“怎么用这些东西”。

因此,我们只需要修改这两个文件,就可以为已有的软件包成功添加新的依赖项。接下来将分别讲解如何修改 package.xmlCMakeLists.txt


修改 package.xml

package.xml 中,依赖项一般分为三类:

  1. 构建依赖(build_depend)
  2. 构建导出依赖(build_export_depend)
  3. 运行依赖(exec_depend)

我们需要先搞清楚这三类依赖的区别:


1. 构建依赖(build_depend)

构建依赖指在构建当前功能包时需要用到的依赖。

包括:

  • 构建 .msg.srv 等自定义消息时引用的外部消息类型
  • 源代码中 #include 引用了外部消息包的头文件

例如,如果你在 .msg 文件中用到了 nav_msgs/Odometry,或者在 .cpp 中使用了 #include <nav_msgs/Odometry.h>,就需要添加:

<build_depend>nav_msgs</build_depend>

2. 构建导出依赖(build_export_depend)

指:当别的功能包依赖你的包时,是否也需要依赖某个外部包才能正常构建。

例如:

  • 如果你的头文件中暴露了 nav_msgs::Odometry 作为参数或成员类型
  • 其他包引用了你的头文件,但这些头文件中依赖了 nav_msgs

这时,其他包在构建时也必须能访问 nav_msgs,所以你需要在 package.xml 中添加:

<build_export_depend>nav_msgs</build_export_depend>

如果 nav_msgs 只是你包的内部实现用到(只出现在 .cpp 中),对外接口没有暴露,就不需要写。


3. 运行依赖(exec_depend)

运行依赖是指:在程序实际运行时,是否真的需要用到某个消息类型或功能包。

简单来说:

  • 如果你在运行程序时用到了某个消息类型(比如发布或订阅 nav_msgs/Odometry),或者调用了某个包的功能(比如导航、路径规划等),那么就需要在 exec_depend 中添加对应的依赖。
  • 如果某个包只是构建时使用,比如消息生成工具(如 message_generation),但运行时不会实际调用这个包的功能,就不需要加到运行依赖中。

如何修改

一般来说,如果你的功能包不会被其他功能包引用或调用,那你只需要添加构建依赖运行依赖就可以了,不用考虑构建导出依赖。

例如:

<build_depend>nav_msgs</build_depend>
<exec_depend>nav_msgs</exec_depend>

这种情况适用于功能包只在内部使用 nav_msgs,没有对外暴露相关接口的场景。


修改 CMakeLists.txt

修改 find_package

find_package(catkin REQUIRED COMPONENTS) 中添加你新加入的依赖项,表示当前功能包在构建时需要这些依赖。

例如,如果你添加了 nav_msgs 作为依赖,就需要在 find_package 中加上:

find_package(catkin REQUIRED COMPONENTSroscpprospystd_msgsstd_srvsmessage_generationnav_msgs  # 添加你的依赖项
)

这样,ROS 构建系统就会知道在构建这个包时需要 nav_msgs,以确保功能包能够正确编译。

其他修改

如果你添加的依赖项是用于定义自定义消息包,那么除了修改 find_package,你还需要调整以下配置:

  • 消息生成器配置:确保在 CMakeLists.txt 中添加消息生成器相关设置,包括:
    • add_message_files:指定自定义的消息文件。
    • add_service_files:指定自定义的服务文件。
    • generate_messages:生成消息类型。

如果你使用 C++ 进行开发,那么除了消息生成器的配置外,还需要修改编译和链接相关的规则,包括:

  • 设置头文件目录路径:使用 include_directories 来指定头文件路径。
  • 添加可执行文件构建规则:使用 add_executable 来指定需要构建的可执行文件。
  • 设置编译依赖关系(构建顺序):使用 add_dependencies 来确保构建时的依赖顺序。
  • 设置目标文件的链接库:使用 target_link_libraries 来链接所需的库文件。

根据需求进行适当的修改,确保项目能够正确编译和链接。

关键字:免费的舆情网站不用下载直接打开_招商加盟网站建设_凡科建站快车_seo工具

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: