package.xml 构成:
1 描述标签
<description>The beginner_tutorials package</description>
用于描述 package
2 维护者标签
<!-- One maintainer tag required, multiple allowed, one person per tag -->
<!-- Example: -->
<!-- <maintainer email="jane.doe@example.com">Jane Doe</maintainer> -->
<maintainer email="user@todo.todo">user</maintainer>
提供一个或者多个维护者信息
3 许可证标签
<!-- One license tag required, multiple allowed, one license per tag -->
<!-- Commonly used license strings: -->
<!-- BSD, MIT, Boost Software License, GPLv2, GPLv3, LGPLv2.1, LGPLv3 -->
<license>TODO</license>
填写package的许可证 BSD MIT…
4 依赖项标签
<!-- The *_depend tags are used to specify dependencies -->
<!-- Dependencies can be catkin packages or system dependencies -->
<!-- Examples: -->
<!-- Use build_depend for packages you need at compile time: -->
<!-- <build_depend>genmsg</build_depend> -->
<!-- Use buildtool_depend for build tool packages: -->
<!-- <buildtool_depend>catkin</buildtool_depend> -->
<!-- Use exec_depend for packages you need at runtime: -->
<!-- <exec_depend>python-yaml</exec_depend> -->
<!-- Use test_depend for packages you need only for testing: -->
<!-- <test_depend>gtest</test_depend> -->
<buildtool_depend>catkin</buildtool_depend>
<build_depend>roscpp</build_depend>
<build_depend>rospy</build_depend>
<build_depend>std_msgs</build_depend>
这些依赖项分为
buildtool_depend:指定,这个package需要自行构建的构建系统工具。通常来讲,只需要catkin。在交叉编译场景中,构建工具依赖项是用于执行编译的架构。
build_depend:指定,需要哪些packages来构建这个package。只要在构建时需要这些package中的任何文件,那就一定要包含这些packages。可以在编译时在include中包含来自这些package的头文件,link链接来自这些package的库或构建时需要的任何其他资源(尤其是当这些package在 CMake 中使用了 find_package() 时)。在交叉编译场景中,构建依赖项是针对目标架构的。
run_depend:指定,运行此package中的代码或针对此package构建库需要哪些package。当您依赖于这些共享库,或在此package的公共标头中传递性地包含其他packages的标头时(尤其是当这些包在 CMake 中的 catkin_package() 中声明为 (CATKIN_)DEPENDS 时)时,就要加入这些packages。
test_depend:仅指定在单元测试中附加的依赖项。不应该重复添加已作为构建或运行依赖项的package
除了catkin中默认提供的buildtool_depend,所有列出的依赖包都已经被添加到build_depend标签中。在本例中,因为在编译和运行时都需要用到所有指定的依赖包,因此还要将每一个依赖包分别添加到run_depend标签中:
<buildtool_depend>catkin</buildtool_depend>
<build_depend>roscpp</build_depend>
<build_depend>rospy</build_depend>
<build_depend>std_msgs</build_depend>
<exec_depend>roscpp</exec_depend>
<exec_depend>rospy</exec_depend>
<exec_depend>std_msgs</exec_depend>
5 最后的package.xml
<?xml version="1.0"?>
<package format="2">
<name>beginner_tutorials</name>
<version>0.1.0</version>
<description>The beginner_tutorials package</description>
<maintainer email="you@yourdomain.tld">Your Name</maintainer>
<license>BSD</license>
<url type="website">http://wiki.ros.org/beginner_tutorials</url>
<author email="you@yourdomain.tld">Jane Doe</author>
<buildtool_depend>catkin</buildtool_depend>
<build_depend>roscpp</build_depend>
<build_depend>rospy</build_depend>
<build_depend>std_msgs</build_depend>
<exec_depend>roscpp</exec_depend>
<exec_depend>rospy</exec_depend>
<exec_depend>std_msgs</exec_depend>
</package>
其中还有一些其他标签
< name > :package的文件名
< version > :版本号
< url type=“website” > :网址信息