1.package.xml介绍
package.xml 是啥呢?package嘛,软件包呗,其实它就是一个软件包的描述文件,描述了软件包的信息,比如啥名称、版本号、维护人员、许可证等等。它也是一个catkin的package必备文件,在较早的ROS版本(rosbuild编译系统)中,这个文件叫做 manifest.xml ,用于描述pacakge的基本信息。如果你在网上看到一些ROS项目里包含着 manifest.xml ,那么它多半是hydro版本之前的项目了。
2.package.xml作用
刚刚也说了,pacakge.xml 包含了package的名称、版本号、内容描述、维护人员、软件许可、编译构建工具、编译依赖、运行依赖等信息。实际上 rospack find
、 rosdep
等命令之所以能快速定位和分析出package的依赖项信息,就是直接读取了每一个pacakge中的 package.xml 文件。它为我们提供了快速了解一个pacakge的渠道。
3.package.xml写法
<pacakge>
根标记文件
<name>
包名
<version>
版本号
<description>
内容描述
<maintainer>
维护者
<license>
软件许可证
<buildtool_depend>
编译构建工具,通常为catkin
<depend>
指定依赖项为编译、导出、运行需要的依赖,最常用
<build_depend>
编译依赖项
<build_export_depend>
导出依赖项
<exec_depend>
运行依赖项
<test_depend>
测试用例依赖项
<doc_depend>
文档依赖项
4.package.xml例子
<?xml version="1.0"?>
<package format="2"> <!--在声明pacakge时指定format2,为新版格式-->
<!--包名-->
<name>turtlesim</name>
<!--版本号-->
<version>0.8.1</version>
<!--描述-->
<description>
turtlesim is a tool made for teaching ROS and ROS packages.
</description>
<!--维护者-->
<maintainer email="dthomas@osrfoundation.org">Dirk Thomas</maintainer>
<!--许可证-->
<license>BSD</license>
<url type="website">http://www.ros.org/wiki/turtlesim</url>
<url type="bugtracker">https://github.com/ros/ros_tutorials/issues</url>
<url type="repository">https://github.com/ros/ros_tutorials</url>
<!--作者-->
<author>Josh Faust</author>
<!--编译工具为catkin-->
<buildtool_depend>catkin</buildtool_depend>
<!--用depend来整合build_depend和run_depend-->
<depend>geometry_msgs</depend>
<depend>rosconsole</depend>
<depend>roscpp</depend>
<depend>roscpp_serialization</depend>
<depend>roslib</depend>
<depend>rostime</depend>
<depend>std_msgs</depend>
<depend>std_srvs</depend>
<!--build_depend标签未变-->
<build_depend>qtbase5-dev</build_depend>
<build_depend>message_generation</build_depend>
<build_depend>qt5-qmake</build_depend>
<!--run_depend要改为exec_depend-->
<exec_depend>libqt5-core</exec_depend>
<exec_depend>libqt5-gui</exec_depend>
<exec_depend>message_runtime</exec_depend>
</package>