7

在 CMakelists.txt 文件中,我看到了 find_packages 和 catkin_package:

find_package(catkin 所需组件 roscpp rospy
image_transport std_msgs message_generation sensor_msgs
geometry_msgs )

catkin_package(CATKIN_DEPENDS message_runtime std_msgs sensor_msgs geometry_msgs)

这两件事有什么区别?

我试图阅读教程中的每一件事,但还不够清楚。

4

2 回答 2

5

答案基本上由以下自动生成的评论给出CMakeLists.txt

## Find catkin macros and libraries
## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz)
## is used, also find other catkin packages
find_package(catkin REQUIRED COMPONENTS ...

## The catkin_package macro generates cmake config files for your package
## Declare things to be passed to dependent projects
## INCLUDE_DIRS: uncomment this if you package contains header files
## LIBRARIES: libraries you create in this project that dependent projects also need
## CATKIN_DEPENDS: catkin_packages dependent projects also need
## DEPENDS: system dependencies of this project that dependent projects also need
catkin_package(...

find_package命令是常见的 cmake 并且需要加载 catkin 宏并指定对其他 ROS 包的依赖关系。

catkin_package命令是这些 catkin 宏之一。它负责包的特定于 ROS 的配置。所以这是区分 ROS 包和普通 cmake 项目的关键部分。我不知道细节,但我猜它负责设置 catkin 工作区的正确构建路径。
当其他 ROS 包依赖于这个时,这里给出的参数(即依赖项)很重要。

于 2015-12-23T09:03:36.760 回答
0

在这里找到另一个答案:

find_package()查找此包的依赖项。

catkin_package(CATKIN_DEPENDS)声明依赖此包的包的依赖关系。

因此,在您的示例中,任何依赖于您的包的包都需要以下依赖项:

  • message_runtime
  • std_msgs
  • sensor_msgs
  • geometry_msgs
于 2018-09-03T21:56:54.313 回答