配置介绍

理解package.xml配置

在package中,存在package.xml文件,此文件主要是描述当前package的一些信息。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?xml version="1.0"?>
<package format="2">
  <name>demo_py</name>
  <version>0.0.0</version>
  <description>The demo_py package</description>
  <maintainer email="itheima@todo.todo">itheima</maintainer>
  <license>TODO</license>

  <buildtool_depend>catkin</buildtool_depend>
  <build_depend>roscpp</build_depend>
  <build_depend>rosmsg</build_depend>
  <build_depend>rospy</build_depend>
  <build_export_depend>roscpp</build_export_depend>
  <build_export_depend>rosmsg</build_export_depend>
  <build_export_depend>rospy</build_export_depend>
  <exec_depend>roscpp</exec_depend>
  <exec_depend>rosmsg</exec_depend>
  <exec_depend>rospy</exec_depend>

  <export>
  </export>
</package>
  • name: 描述了当前package的名称
  • version: 描述了当前package的版本信息
  • build_depend: 编译时依赖
  • build_export_depend: 编译导出依赖
  • exec_depend: 执行依赖

Tip

package.xml文件是我们通过catkin_create_pkg创建package时自动生成的,我们要求能看懂当前文件的一些含义。

我们还需要掌握,当我们的项目在开发阶段,需要引入一些其他依赖时,需要在此处配置一些依赖。主要是掌握build_dependbuild_export_dependexec_depend进行配置依赖

理解CMakeLists.txt

CMakeLists.txt是在创建Package时自动生成的,不需要我们手动创建。

c++11支持

通常开发过程中我们会添加c++11的支持,只需要解开以下注释:

1
add_compile_options(-std=c++11)

find_package

1
2
3
4
5
find_package(catkin REQUIRED COMPONENTS
        roscpp
        rosmsg
        rospy
        )

Note

此处的find_package提供了ros的package依赖支持。

package依赖指的是一个package依赖另外一个package,在ros中提供了很多package。

roscpp提供的是c++ 开发和编译环境,配置时需要在此处添加,也需要在package.xml中配置。

rospyt提供的是python开发和编译环境

build

CMakeLists.txt中,搜索以下

1
2
3
###########
## Build ##
###########

在build区域中,通过add_executable添加可执行的配置。

1
add_executable(exe_name src/xxx.cpp src/h1.h src/h2.h)

Note

内置填写可以分为多个部分:

exe_name指的是打包出来可执行文件名称

src/xxx.cpp指的是可执行文件

src/h1.h src/h2.h ...指的是可执行文件依赖的文件

在build区域中,通过target_link_libraries添加动态链接库。

1
2
3
4
target_link_libraries(
        exe_name
        ${catkin_LIBRARIES}
)

Note

exe_name要和前面add_executable可执行配置名称一致。

${catkin_LIBRARIES}是标准库,默认必须添加。