ros2的package.xml和rosdep

rosdep 是一款可用于处理软件包和外部库依赖关系的依赖管理工具。它是一个命令行工具,用于识别和安装构建或安装软件包所需的依赖项。rosdep 本身并非包管理器,而是一款元包管理器,它借助自身对系统和依赖项的了解,在特定平台上找到合适的待安装软件包。实际的安装操作则通过系统包管理器(例如 Debian/Ubuntu 上的 apt、Fedora/RHEL 上的 dnf 等)来完成。

rosdep 最常在构建工作空间之前调用,用于安装该工作空间内软件包的依赖项。

它能够对单个软件包或一个软件包目录(如工作空间)进行处理。

PACKAGE.xml标签

<depend>

用途 :声明同时需要在构建时运行时 存在的依赖项。
适用场景

  • C++ 包(多数情况下)。
  • 当依赖项的头文件、库或工具在构建和运行阶段均需使用时。

示例

复制代码
<depend>rclcpp</depend>  <!-- C++ ROS 客户端库 -->
<depend>std_msgs</depend> <!-- 标准消息类型 -->

2. <build_depend>

用途 :声明仅在构建阶段 需要的依赖项,运行时无需。
适用场景

  • 仅用于生成代码、编译或测试的工具(如 ament_cmake)。
  • 不导出头文件或配置的依赖项。

注意

若导出的头文件包含此依赖项的头文件,需同时添加 <build_export_depend>

示例

复制代码
<build_depend>ament_cmake</build_depend>  <!-- 构建工具 -->

3. <build_export_depend>

用途 :声明你的包导出的内容 (如头文件、CMake 配置)所依赖的项。
适用场景

  • 当你的包导出的头文件中包含其他库的头文件时。
  • 其他包构建时需要依赖你的包,同时也需要这些依赖项。

示例

若你的包导出的头文件包含 Eigen 库的头文件:

复制代码
<build_depend>eigen3_cmake_module</build_depend>
<build_export_depend>eigen3</build_export_depend>

4. <exec_depend>

用途 :声明仅在运行阶段 需要的依赖项(如共享库、Python 模块、启动脚本)。
适用场景

  • 纯 Python 包(无需构建阶段)。
  • 运行时需要的可执行文件或动态库。

示例

复制代码
<exec_depend>rclpy</exec_depend>  <!-- Python ROS 客户端库 -->
<exec_depend>ros2launch</exec_depend>  <!-- 启动工具 -->

5. <test_depend>

用途 :声明仅在测试阶段 需要的依赖项(如测试框架、模拟工具)。
注意

  • 避免与其他依赖标签重复(如 <depend>)。

示例

复制代码
<test_depend>ament_lint_auto</test_depend>  <!-- 代码检查工具 -->
<test_depend>ament_cmake_gtest</test_depend>  <!-- GTest 集成 -->

rosdep安装使用

bash 复制代码
apt-get install python3-rosdep

使用前初始化

bash 复制代码
sudo rosdep init
rosdep update
bash 复制代码
rosdep install --from-paths src -y --ignore-src

如果处于工作空间的根目录,且源代码存放在 src 目录下,对应的命令如下:

bash 复制代码
rosdep install --from-paths src -y --ignore-src
  • --from-paths src:指定要检查 package.xml 文件的路径,从而解析依赖项的键。
  • -y:对包管理器的所有安装提示默认选择 "是",无需手动确认即可完成安装。
  • --ignore-src:表示如果依赖项对应的包本身也在当前工作空间中,即使存在 rosdep 键,也忽略安装该依赖项。
相关推荐
未来之窗软件服务9 小时前
万象EXCEL开发(五)模拟excel行计算 ——东方仙盟练气期
xml·仙盟创梦ide·东方仙盟·万象excel
sun00770011 小时前
网络配置config.xml的android.mk解析
android·xml
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ19 小时前
mapper.xml中limit分页参数不能使用计算表达式问题
xml
余防1 天前
XXE - 实体注入(xml外部实体注入)
xml·前端·安全·web安全·html
未来之窗软件服务2 天前
万象EXCEL开发(四)格式解读theme1.xml ——东方仙盟练气期
xml·仙盟创梦ide·东方仙盟·万象excel
未来之窗软件服务2 天前
万象EXCEL开发(二)格式解读sharedStrings.xml——东方仙盟练气期
xml·excel·仙盟创梦ide·东方仙盟·万象excel·东方仙盟格式
goTsHgo3 天前
Spring XML 配置简介
xml·java·spring
半导体守望者3 天前
TR帝尔编码器GSD文件 PROFIBUS XML PROFINET EtherCAT 文件 ADH CDH CMV等
xml·经验分享·笔记·机器人·自动化·制造
极光雨雨3 天前
XML中的 CDATA mybaitis xml中的 <![CDATA[ xxxx ]]>
xml
未来之窗软件服务4 天前
万象EXCEL开发(三)格式解读calcChain.xml——东方仙盟练气期
xml·仙盟创梦ide·东方仙盟·万象excel