Pack.xml是每个功能程序包所必须的,在包的根目录下。该文件定义了包的属性,如包名、版本号、作者、维护人员以及对其他catkin包的依赖关系,其有两个版本的书写格式,在indigo下是使用版本1,
<package> //首尾各一个,中间包括其内容
<name>foo_core</name> //包的名称,也就是概括包的功能,必须
<version>1.2.4</version> //包的版本号,一般是自动生成,三位逗号隔开的数字
<description> //包的描述
This package provides foo capability.
</description> //首尾,中间是内容
<maintainer email="ivana@willowgarage.com">IvanaBildbotz</maintainer> //作者信息
<license>BSD</license> //软件许可
<url>http://ros.org/wiki/foo_core</url>
<author>Ivana Bildbotz</author>
<buildtool_depend>catkin</buildtool_depend>
<build_depend>message_generation</build_depend>
<build_depend>roscpp</build_depend>
<build_depend>std_msgs</build_depend>
<run_depend>message_runtime</run_depend>
<run_depend>roscpp</run_depend>
<run_depend>rospy</run_depend>
<run_depend>std_msgs</run_depend>
<test_depend>python-mock</test_depend>
</package>
构建,运行和测试依赖包
具有最小标签的包清单不指定对其他包的任何依赖关系。软件包可以有四种依赖关系:
Build Tool Dependencies构建工具依赖关系指定此软件包需要构建自身的构建系统工具。通常唯一的构建工具是catkin。在交叉编译场景中,构建工具依赖关系用于执行编译的架构。
Build Dependencies构建依赖关系指定构建此包所需的包。在构建时需要这些软件包中的任何文件时才是这种情况。这可以包括这些包在编译时的标头,链接到这些包的库或在构建时需要任何其他资源(特别是当这些包在CMake 中是find_package())时)。在交叉编译场景中,构建依赖关系针对目标体系结构。
Run Dependencies运行依赖关系指定在此程序包中运行代码所需的软件包,或针对此软件包构建库。在这种情况下,您依赖于共享库或将其头部包含在此包中的公头中(特别是当这些包在CMake 中的catkin_package()中声明为(CATKIN_DEPENDS)时)。
Test Dependencies测试依赖关系仅指定单元测试的附加依赖项。他们不应该将已经提到的任何依赖关系重复为构建或运行依赖关系。
这四种类型的依赖关系使用以下相应的标签来指定:
<buildtool_depend>
<build_depend>
<run_depend>
<test_depend>
所有包至少有一个依赖关系,构建工具依赖于catkin,