实践与wiki教程对比学习ROS(catkin/package.xml)

来源:互联网 发布:mac安装windows10失败 编辑:程序博客网 时间:2024/05/20 07:20

【wiki版本】

1.概述

软件包清单是一个XML文件名为package.xml中必须包括与任何兼容柳絮包的根文件夹。此文件定义包的属性,例如包名称,版本号,作者,维护者和对其他catkin包的依赖性。

2.格式

2.1 【基本结构】每个package.xml文件都有<package>标记作为根标记文件。
<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>
除了必需的<buildtool_depends>的依赖柳絮,元数据包只能对包运行依赖其中,他们组。另外,元包还有一个必需的,样板CMakeLists.txt文件:
cmake_minimum_required(VERSION 2.8.3)项目(<PACKAGE_NAME>)find_package(catkin REQUIRED)catkin_metapackage()
注意:将<PACKAGE_NAME>替换为元素包的名称。
2.5【其他标签】
  • <url> - 关于软件包的信息的URL,通常是ros.org上的wiki页面。

  • <author> - 包的作者


【实践版本】


0 0
原创粉丝点击