当前位置:网站首页>[ROS](04)package.xml详解
[ROS](04)package.xml详解
2022-08-02 14:02:00 【CynalFly】
文章只是个人学习过程中学习笔记,主要参考ROS教程1。
1、概述
软件包(package)清单(manifest)是一个名为 package.xml
2 的 XML 文件,必须包含在任何兼容 catkin 的软件包的根文件夹中。该文件定义了有关软件包的属性,例如软件包名称、版本号、作者、维护者以及对其他catkin软件包的依赖关系。
Note:
package.xml
类似于早期的rosbuild编译系统
中使用的manifest.xml
文件。
2、package.xml文件
2.1 遵循的格式
package.xml
遵循XML(可扩展标记语言)标签的写法,包含的标签有:
编号 | 标签 | 功能 | 备注 |
---|---|---|---|
1 | <package> | 根标签,所有其他标签都嵌套在它下面 | Required |
2 | <name> | 软件包的名称 | Required |
3 | <version> | 软件包的版本号(必须是3个点分隔的整数) | Required |
4 | <description> | 软件包的内容描述 | Required |
5 | <maintainer> | 软件包的维护者 | Required |
6 | <license> | 发布代码的软件许可证(例如 GPL、BSD、ASL) | Required |
7 | <buildtool_depend> | 编译系统工具,通常为catkin | – |
8 | <depend> | 指定依赖项为编译、导出、运行需要的依赖,最常用 | – |
9 | <build_depend> | 编译依赖项 | – |
10 | <build_export_depend> | 编译导出依赖项 | – |
11 | <exec_depend> | 执行依赖项 | – |
12 | <test_depend> | 测试用例依赖项 | – |
13 | <doc_depend> | 文档工具依赖项 | – |
2.2 文件解析
<!-- 定义文档的语法 ,内容遵循xml的1.0版本 -->
<?xml version="1.0"?>
<!-- (1) package为根标签,软件包的格式为2(推荐),老版本为1 -->
<package format="2">
<!-- (2) 软件包的名称 -->
<name>beginner_tutorials</name>
<!-- (3) 软件包的版本 -->
<version>0.0.0</version>
<!-- (4) 软件包的内容描述 -->
<description>The beginner_tutorials package</description>
<!-- (5) 软件包的维护者 -->
<maintainer email="[email protected]">fly</maintainer>
<!-- (6) 发布代码的软件许可证(ROS核心代码默认为BSD) -->
<!-- BSD, MIT, Boost Software License, GPLv2, GPLv3, LGPLv2.1, LGPLv3 -->
<license>BSD</license>
<!-- (可选) Url标签是可选的,但是允许多个,每个标签一个 -->
<!-- 可选属性类型可以是:网站、bug跟踪器或存储库 -->
<!-- Url标签可以帮助用户查找文档并报告问题 -->
<!-- <url type="website">http://wiki.ros.org/beginner_tutorials</url> -->
<!-- (可选) Author标签是可选的,但是允许多个,每个标签一个 -->
<!-- 维护者是发布软件包的人,但作者不一定是维护者 -->
<!-- <author email="[email protected]">Jane Doe</author> -->
<!-- (8) depend 标记用于指定依赖项(依赖项可以是catkin包或系统依赖项) -->
<!-- <depend>roscpp</depend> -->
<!-- 上述 depend 标签依赖,相当于下面两行内容 -->
<!-- <build_depend>roscpp</build_depend> -->
<!-- <exec_depend>roscpp</exec_depend> -->
<!-- (9) 对编译时需要的包使用build_depend: -->
<!-- <build_depend>message_generation</build_depend> -->
<!-- (10) 对于你需要的包使用build_export_depend来构建这个包: -->
<!-- <build_export_depend>message_generation</build_export_depend> -->
<!-- (7) 对构建工具的包,使用 buildtool_depend标签 -->
<!-- 构建工具依赖关系指定此软件包需要构建自身的构建系统工具。通常唯一的构建工具是 catkin -->
<!-- <buildtool_depend>catkin</buildtool_depend> -->
<!-- (11) 对运行时需要的包,使用 exec_depend标签 -->
<!-- 执行依赖关系,指定此程序包中运行代码所需的软件包,如动态链接库,可执行文件,Python模块,脚本文件 -->
<!-- <exec_depend>message_runtime</exec_depend> -->
<!-- (12) 对于只用于测试的包使用test_depend: -->
<!-- <test_depend>gtest</test_depend> -->
<!-- (13) 对于只用于构建文档的包,使用doc_depend -->
<!-- <doc_depend>doxygen</doc_depend> -->
<!-- ============================================ -->
<!-- 实例说明 -->
<!-- ============================================ -->
<!-- (7) 依赖的构建工具,这是必须的 -->
<buildtool_depend>catkin</buildtool_depend>
<!-- (9) 指定编译此软件包需要的依赖 -->
<build_depend>roscpp</build_depend>
<build_depend>rospy</build_depend>
<build_depend>std_msgs</build_depend>
<!-- (10) 指定根据这个软件包构建库所需的依赖项(导出) -->
<build_export_depend>roscpp</build_export_depend>
<build_export_depend>rospy</build_export_depend>
<build_export_depend>std_msgs</build_export_depend>
<!-- (11) 运行该软件包中的代码所需的依赖项 -->
<exec_depend>roscpp</exec_depend>
<exec_depend>rospy</exec_depend>
<exec_depend>std_msgs</exec_depend>
<!-- The export tag contains other, unspecified, tags -->
<export>
<!-- Other tools can request additional information be placed here -->
</export>
</package>
ROS.otg. ROS教程[EB/OL]. 2020-12-22[2022-7-5].
http://wiki.ros.org/cn/ROS/Tutorials. ︎ROS.org.MaryaBelanger. package.xml[EB/OL]. 2019-07-24[2022-07-18]. https://wiki.ros.org/catkin/package.xml. ︎
边栏推荐
- WeChat Mini Program-Recent Dynamic Scrolling Implementation
- CVE-2020-27986 (Sonarqube sensitive information leak) vulnerability fix
- 如何自定义feign方法级别的超时时间
- IDEA打包jar包
- 云片网案例
- Why does a four-byte float represent a wider range than an eight-byte long
- Some impressions of the 519 plummet 2021-05-21
- 关于密码加密的一点思路
- Tornado框架路由系统介绍及(IOloop.current().start())启动源码分析
- 目标检测场景SSD-Mobilenetv1-FPN
猜你喜欢
Sentinel源码(三)slot解析
第二届中国Rust开发者大会(RustChinaConf 2021~2022)线上大会正式开启报名
About the development forecast of the market outlook?2021-05-23
Object detection scene SSD-Mobilenetv1-FPN
You can't accept 60% slump, there is no eligible for gain of 6000% in 2021-05-27
瑞吉外卖笔记——第05讲Redis入门
期货具体是如何开户的?
专访|带着问题去学习,Apache DolphinScheduler 王福政
Gstreamer Plugin注册流程详解
Shell脚本完成pxe装机配置
随机推荐
stack && queue
【Tensorflow】AttributeError: module ‘keras.backend‘ has no attribute ‘tf‘
无序数组排序并得到最大间隔
Minio文件上传
文件加密软件有哪些?保障你的文件安全
EasyExcel 的使用
Break the limit of file locks and use storage power to help enterprises grow new momentum
Sentinel源码(二)入口方法分析
The bad policy has no long-term impact on the market, and the bull market will continue 2021-05-19
网页设计(新手入门)[通俗易懂]
第十四单元 视图集及路由
智能指针-使用、避坑和实现
window10下半自动标注
第十单元 前后连调
Why does a four-byte float represent a wider range than an eight-byte long
第四单元 路由层
redis分布式锁和看门狗的实现
深度学习框架pytorch快速开发与实战chapter3
动态刷新日志级别
RKMPP API安装使用总结