catkin简介
catkin是当前ROS的官方编译工具,每天都要接触到,因此有必要单独说说。
catkin编译基于CMake,源代码以package为单位组织,每个package必须包含package.xml和CMakeList.txt两个文件。
package.xml
catkin支持两种package.xml标签格式,格式1标准说明是REP-0127,格式2标准说明是REP-0140。后者是针对前者的一些缺点进行改进后的版本,因此更加被推荐使用。
在package.xml中主要包含以下信息:
- 描述信息(比如package的功能描述、维护者等)
- 依赖信息
- 元信息(比如作者、网页)
- package信息(比如版本)
每个package.xml文件必须包含的标签包括:
- <package> : 最高级tag,属性:format,用于指定格式
- <name> :package名称
- <version> :当前版本
- <description>:package的基本描述
- <maintainer>(至少一个):维护者
- <license>(至少一个):协议
- <buildtool_depend>(至少一个):一般情况下只需要指定catkin作为编译工具,在需要交叉编译的情况下需要增加目标机器的编译工具。
可选标签包括:
- <package>
- <url> (多个):指定package的网址
- <author> (多个):作者
- <build_depend> (多个):编译时需要依赖的其它package,适用于静态库
- <conflict> (多个):声明本package与其它ROS package有冲突,不能同时部署
- <replace> (多个):声明本package是其它package的替换版本
- <export>:用于添加额外的信息,比如需要嵌入的其它package的插件,或者一些说明信息。
插件:
<export>
<rviz plugin="${prefix}/plugin_description.xml"/>
</export>
废弃信息:
<export>
<deprecated>
This package will be removed in ROS Hydro. Instead, use package
FOO, which provides similar features with a different API.
</deprecated>
</export>
meta package标记:
<export>
<metapackage/>
</export>
以及在格式1和格式2有区别的标签:
格式1
- <package>
- <run_depend> (多个):运行时需要依赖的其它package,如动态链接库、可执行文件、Python模块、脚本文件等。