参考:http://wiki.ros.org/catkin/package.xml
1. 概述
包清单是一个名为package.xml 的 XML文件,必须包含在任何符合 catkin 的包的根文件夹中。此文件定义有关包的属性,如包名称、版本号、作者、维护者以及其他 catkin 包的依赖项。
2. 格式 2(推荐)
这是新包的推荐格式。还建议将较旧的格式 1 包迁移到格式 2。有关从格式 1 迁移到格式 2 的说明,请参阅在 catkin API 文档中从格式 1迁移到格式 2。
2.1 基本结构
每个包.xml 文件都具有 <package>
标记作为文档中的根标记。
<package format="2">
</package>
2.2 必要标签
一个package最少需要包含以下tag来保证配置文件的完整性:
<名称>
- 包的名称<version>
- 包的版本号(需要 3 个点分隔的整数)<说明>
- 包装内容说明<维护者>
- 正在维护包裹的人的姓名<许可证>
- 发布代码的软件许可证(例如 GPL、BSD、ASL)。
例如,下面是一个叫 foo_core 虚构包的配置文件。
<package format="2">
<name>foo_core</name>
<version>1.2.4</version>
<description>
This package provides foo capability.
</description>
<maintainer email="ivana@osrf.org">Ivana Bildbotz</maintainer>
<license>BSD</license>
</package>
name
包的名字
version
包的版本号,需要以点将数字分开
description
包内容的描述
maintainer
维护这个包的作者
license
- 软件发布时的许可(例如 GPL, BSD, ASL)
2.3 Dependencies
当然,上面给出的示例是一个比较简单的例子,它没有加入任何依赖(dependencies
),包依赖可以有6种类型。
depend
指定依赖项,最常用
buildtool_depend
指定构建此包所需的工具,通常唯一的工具就是catkin。
build_depend
指定构建该包需要哪些包
build_export_depend
指定根据这个包构建库所需要的包
exec_depend
运行该包中的代码需要的包
test_depend
单个测试需要的依赖
doc_depend
指定此包生成文档时需要的文档工具
所有的包最少都有一个依赖,一个构建工具依赖(buildtool_depend),例如:
<package format="2">
<name>foo_core</name>
<version>1.2.4</version>
<description>
This package provides foo capability.
</description>
<maintainer email="ivana@osrf.org">Ivana Bildbotz</maintainer>
<license>BSD</license>
<buildtool_depend>catkin</buildtool_depend>
</package>
如果是一个比较实际的例子,那么就会有构建、执行、测试和文档依赖,例如下面:
<package format="2">
<name>foo_core</name>#包名
<version>1.2.4</version>#版本号
<description>#描述消息
This package provides foo capability.
</description>
<maintainer email="ivana@willowgarage.com">Ivana Bildbotz</maintainer>
<license>BSD</license>
<url>http://ros.org/wiki/foo_core</url>#链接
<author>Ivana Bildbotz</author>#作者
<buildtool_depend>catkin</buildtool_depend>#构建工具依赖
<depend>roscpp</depend>#依赖的包
<depend>std_msgs</depend>
<build_depend>message_generation</build_depend>#构建时依赖的包
<exec_depend>message_runtime</exec_depend>#运行是依赖的包
<exec_depend>rospy</exec_depend>
<test_depend>python-mock</test_depend>#测试时依赖的包
<doc_depend>doxygen</doc_depend>#生成文档时依赖的包
</package>
2.4 Metapackages(该章未翻译)
It is often convenient to group multiple packages as a single logical package. This can be accomplished through metapackages. A metapackage is a normal package with the following export tag in the package.xml:
<export>
<metapackage />
</export>
Other than a required <buildtool_depends>
dependency on catkin
, metapackages can only have execution dependencies on packages of which they group.
Additionally a metapackage has a required, boilerplate CMakeLists.txt file:
cmake_minimum_required(VERSION 2.8.3)
project(<PACKAGE_NAME>)
find_package(catkin REQUIRED)
catkin_metapackage()
Note: replace <PACKAGE_NAME>
with the name of the metapackage.
2.5 其他标签
<url>
- 包上信息的 URL,通常是ros.org。<作者>
- 包的作者