catkin软件包的组成
一个软件包必须满足如下条件才能被称之为catkin软件包:
- 这个软件包必须包含一个catkin编译文件package.xml(manifests文件),此文件包含了描述该软件包的重要信息。
- 这个软件包必须包含一个CMakeLists.txt文件,并且采用catkin。
- 在每个文件夹中可能只有一个软件包,这表明没有相互依赖的软件包共享相同的目录。
最简单的可能的软件包可能有如下文件结构:
my_package/
CMakeLists.txt
package.xml
catkin工作空间中的软件包
推荐利用catkin工作空间来处理catkin软件包相关的内容,但是也可以单独编译catkin软件包。一个普通的工作空间如下所示:
workspace_folder/ -- WORKSPACE
src/ -- SOURCE SPACE
CMakeLists.txt -- 'Toplevel' CMake file, provided by catkin
package_1/
CMakeLists.txt -- CMakeLists.txt file for package_1
package.xml -- Package manifest for package_1
...
package_n/
CMakeLists.txt -- CMakeLists.txt file for package_n
package.xml -- Package manifest for package_n
创建一个catkin软件包
利用catkin_create_pkg
命令创建一个新的catkin软件包。
cd ~/catkin/src
catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
依赖于std_msgs、rospy、roscpp在src目录下创建一个名为beginner_tutorials的catkin软件包,这将会创建一个名称为beginner_tutorials的包含CMakeLists.txt和package.xml文件的文件夹。catkin_create_pkg命令要求提供软件包名称和可选择的一系列软件包的依赖。
注意:软件包命名惯例是—以小写字母开头,只能包含小写字母和数字以及下划线,不符合规则的软件包名称将不能编译通过。
mountzf@ubuntu:~/catkin_ws/src/beginner_tutorials$ tree
.
├── CMakeLists.txt
├── include
│ └── beginner_tutorials
├── package.xml
└── src
同时也会创建beginner_tutorials软件包的src文件夹和include文件夹,但是此时都是空的。
编译catkin工作空间
创建完成软件包之后,