在文件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 )
这两件事有什么不同?
我试着阅读了教程中的每个内容,但都不够清楚。
发布于 2015-12-23 17:03:37
答案基本上是由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包依赖于这个ROS包时,这里给出的参数(即依赖关系)很重要。
发布于 2018-09-04 05:56:54
find_package()
查找此包的依赖项。
catkin_package(CATKIN_DEPENDS)
声明依赖于此包的包的依赖关系。
因此,在您的示例中,依赖于您的包的任何包都需要以下依赖关系:
message_runtime
std_msgs
sensor_msgs
geometry_msgs
https://stackoverflow.com/questions/34419103
复制相似问题