package.xml 文件
和 manifest 文件类似,描述功能包的属性,包括功能包的名字、版本号、作者、维护者、通行证 以及所以来的功能包。
http://wiki.ros.org/catkin/package.xml
1、基本结构
<package>
</package>
2、标签
<name> - 功能包的名字
<version> -功能包的版本
<description> - 功能包内容的描述
<maintainer> - 功能包的创建于维护者
<license> - 软件发行版通行证 (例如: GPL, BSD, ASL)
例子:
<package>
<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>
</package>
3、依赖
一共有四种依赖包
<buildtool_depend> - 指定编译此功能包的编译系统工具
<build_depend> - 指定编译此功能包需要的其他功能包,可以是功能包中的头文件、链接库、其他源文件。
<run_depend> - 指定运行此功能包代码需要的其他功能包。
<test_depend> - 指定单元测试需要的其他功能包
在混合交叉编译中,上述依赖包主要取决于混合编译系统。
最简单例子:
<package>
<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>
<buildtool_depend>catkin</buildtool_depend>
</package>
详细例子:
<package>
<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>
<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>
4、Metapackages
当一个功能包中包含好几个子功能包时使用。
在 package.xml中有如下代码:
<export>
<metapackage />
</export>
那么,对应的CMakelist.txt 内容如下:
cmake_minimum_required(VERSION 2.8.3)
project(<PACKAGE_NAME>)
find_package(catkin REQUIRED)
catkin_metapackage()
5、其他标签
- 功能包信息的链接, 一般为 ros.org 上的百科
- 功能包的作者信息,包括邮箱、名字等