ROSWiki对于Meta的定义
Metapackages are specialized Packages in ROS (and catkin). They do not install files (other than their package.xml manifest) and they do not contain any tests, code, files, or other items usually found in packages.
翻译:Metapackage是ROS中的特殊的package,他们不包含任何的安装文件,源代码文件,和任何其他的可以在一个普通的package里找到的文件。
MetaPackage的作用
1.组织其他的package
- Metapackage负责管理其他在Metapackage中的包
- 也就是说如何我们下载安装一个Metapackage,ROS会帮助我们自动安装所有包含在这个Metapackage的包。
2.兼容由Rosbuild编译的包
3.将一个Robot的每个主要的功能组织成一个Metapackage然后再由Metapackage组织成整个系统。
Metapackage中.xml文件和CMakeLIst.txt文件。
Metapackage中的.xml文件是有固定的形式的如下
<export> #表示这是一个Metapackage
<metapackage/>
<architecture_independent/>
</export>
##下面均是MetaPackage所管理的所有的其他的package,还可以扩充##
<exec_depend>your_custom_msgs</exec_depend>
<exec_depend>your_server_node</exec_depend>
<exec_depend>your_utils</exec_depend>
Metapackage中的CMakeList.txt文件是有固定的形式的如下,所有的Metapackage中的CMakeList.txt文件均是这样。
cmake_minimum_required(VERSION 3.0.2)
project(your_package)
find_package(catkin REQUIRED)
catkin_metapackage()