文章目录
前言
一、基本格式
1.基本结构
2.必要标签
3.依赖关系
二、Metapackage包
总结
ros每个功能包中都有一个包清单,它是一个名为package.xml的XML 文件,它必须包含在任何符合 catkin 的包的根文件夹中。此文件定义有关包的属性,例如包名称、版本号、作者、维护者以及对其他 catkin 包的依赖性。
package.xml文件有自己特有的数据书写标签,而它是xml格式文件,大家可能不太熟悉这个格式,其中的标签也比较复杂,本文对这些标签的作用进行解析,并阐明Metapackage元包的作用。
每个 package.xml 文件都有
这些必要标签是在
foo_core 1.2.4 This package provides foo capability. Ivana Bildbotz BSD
依赖关系是用来说明该功能包编译或运行时需要依赖哪些其他的功能包,可以有六种类型的依赖关系:
Build Tool Dependencies指定构建功能包系统的工具。通常,唯一需要的构建工具是 catkin。在交叉编译场景中,构建工具依赖项适用于执行编译的体系结构。
Build Dependencies指定编译这个包时需要哪些包。当构建时需要这些包中的任何文件时,就会出现这种情况。当这些包在 CMake 中被放到find_package()中时,就需要把这些包写在build_dependencies标签中。在交叉编译场景中,构建依赖项是针对目标架构的。
Build Export Dependencies指定需要哪些包来针对此包构建库。当您在此包的公共标头中传递地包含它们的标头时就是这种情况(尤其是当这些包在 CMake 的catkin_package()中声明为 (CATKIN_)DEPENDS 时)。
Execution Dependencies指定运行此包中的代码需要哪些包。当您依赖此包中的共享库时就是这种情况(尤其是当这些包在 CMake 的catkin_package()中声明为 (CATKIN_)DEPENDS 时)。
Test Dependencies项仅指定单元测试的附加依赖项。他们不应该复制任何已经提到的构建或运行依赖项的依赖项,基本用不着。
Documentation Tool Dependencies指定此包生成文档所需的文档工具,基本用不着。
这六个关系依次对应标签:
因为
foo_core 1.2.4 This package provides foo capability. Ivana Bildbotz BSD http://ros.org/wiki/foo_core Ivana Bildbotz catkin roscpp std_msgs message_generation message_runtimerospy python-mock doxygen
foo_core 1.2.4 This package provides foo capability. Ivana Bildbotz BSD http://ros.org/wiki/foo_core Ivana Bildbotz catkin roscpp std_msgs message_generation message_runtime rospy roscpp std_msgs message_generation message_runtime rospy roscpp std_msgs message_generation message_runtime rospy python-mock doxygen
Metapackage包本身没什么意义,它是负责管理其他在Metapackage中的包,Metapackage是一个功能包集,是把一些相近的功能模块、 软件包放到一起,比如ROS中一些常见地功能包集:
Metapackage中的.xml文件是有固定的形式的如下:
#表示这是一个Metapackage
##下面均是MetaPackage所管理(依赖)的所有的其他的package
your_custom_msgs
your_server_node
your_utils
Metapackage中的CMakeList.txt文件是有固定的形式的如下,所有的Metapackage中的CMakeList.txt文件均是这样:
cmake_minimum_required(VERSION 2.8.3)
project(exploration_master)
find_package(catkin REQUIRED)
catkin_metapackage()
package.xml文件是每个功能包必须包含的文件,它描述了功能包的主要功能和作者信息,以及编译和运行功能包需要依赖的其他功能包,而它是xml格式文件,大家可能不太熟悉这个格式,其中的标签也比较复杂,本篇文章对其进行了详细解析。