【wiki版本】
1.概述
该软件包清单是一个XML文件名为package.xml中必须包括与任何兼容柳絮包的根文件夹。此文件定义包的属性,例如包名称,版本号,作者,维护者和对其他catkin包的依赖性。
2.格式
<package format =“2”>
</ package>
2.2 【必须的标签】有一个最小的标签集需要嵌套在<package>标签中以使包清单完整。
-
<name> - 包的名称
-
<version> - 软件包的版本号(需要3个点分隔的整数)
-
<description> - 包内容的描述
-
<maintainer> - 维护包裹的人员的姓名
-
<license> - 发布代码的软件许可证(例如GPL,BSD,ASL)。
<package format =“2”>
<name> foo_core </ name>
<version> 1.2.4 </ version>
<description>
此包提供foo功能。
</ description>
<maintainer email =“ivana@osrf.org”> Ivana Bildbotz </ maintainer>
<license> BSD </ license>
</ package>
2.3【依赖】具有最小标记的包清单不指定对其他包的任何依赖性。软件包可以有六种类型的依赖:
-
构建依赖关系指定构建此包所需的包。这是在构建时需要这些包中的任何文件的情况。这可以在编译时包括来自这些包的头,从这些包链接到库,或者在构建时需要任何其他资源(特别是当这些包在CMake 中是find_package()时)。在交叉编译场景中,构建依赖关系是针对目标体系结构的。
-
构建导出依赖关系指定需要哪些包来针对此包构建库。这是这种情况下,当你在头文件包中的公共头包含他们的头文件(特别是当这些包声明为(CATKIN_)DEPENDS在catkin_package()在CMake)。
-
执行依赖关系指定在此软件包中运行代码所需的软件包。这是依赖于此包中的共享库(特别是当这些包在CMake 中的catkin_package()中声明为(CATKIN_)DEPENDS时)。
-
测试依赖关系仅指定单元测试的附加依赖关系。它们不应该复制已经提到的构建或运行依赖项的任何依赖项。
-
构建工具依赖关系指定构建系统工具,这个包需要构建自己。通常,唯一需要的构建工具是catkin。在交叉编译场景中,构建工具依赖性是针对执行编译的体系结构。
-
文档工具依赖性指定此程序包生成文档所需的文档工具。
这六种类型的依赖关系使用以下各自的标签指定:
-
< depends >指定依赖关系是构建,导出和执行依赖关系。这是最常用的依赖标签。
-
<buildtool_depend>
-
<build_depend>
-
<build_export_depend>
-
<exec_depend>
-
<test_depend>
-
<doc_depend>
所有包都至少有一个依赖,一个构建工具依赖catkin如下例所示。
<package>
<name> foo_core </ name>
<version> 1.2.4 </ version>
<description>
此包提供foo功能。
</ description>
<maintainer email =“ivana@osrf.org”> Ivana Bildbotz </ maintainer>
<license> BSD </ license>
<buildtool_depend> catkin </ buildtool_depend>
</ package>
指定build,exec,test和doc依赖项的更现实的示例可以如下所示。
<package>
<name> foo_core </ name>
<version> 1.2.4 </ version>
<description>
此包提供foo功能。
</ 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>
<depends> roscpp </ depend>
<depends> 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【metapackage】将多个包作为单个逻辑包进行分组通常很方便。这可以通过
元包实现
。metapackage是一个在package.xml中具有以下导出标记的普通软件包:
<export>
<metapackage />
</ export>
cmake_minimum_required(VERSION 2.8.3)
项目(<PACKAGE_NAME>)
find_package(catkin REQUIRED)
catkin_metapackage()
注意:将
<PACKAGE_NAME>
替换为元素包的名称。
-
<url> - 关于软件包的信息的URL,通常是ros.org上的wiki页面。
-
<author> - 包的作者
【实践版本】