catkin_package 对比 find_package
catkin_package vs. find_package
在文件 CMakelists.txt 中我看到 find_packages 和 catkin_package:
find_package(catkin REQUIRED COMPONENTS roscpp rospy
image_transport std_msgs message_generation sensor_msgs
geometry_msgs )
catkin_package( CATKIN_DEPENDS message_runtime std_msgs sensor_msgs
geometry_msgs )
这两者有什么区别?
教程里的每一件事我都试着看了一遍,但还是不够清楚。
答案基本上由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 包依赖于此包时,此处给出的参数(即依赖项)很重要。
find_package()
finds dependencies for this package.
catkin_package(CATKIN_DEPENDS)
declares dependencies for packages that depend on this package.
因此在您的示例中,依赖于您的包的任何包都需要以下依赖项:
message_runtime
std_msgs
sensor_msgs
geometry_msgs
在文件 CMakelists.txt 中我看到 find_packages 和 catkin_package:
find_package(catkin REQUIRED COMPONENTS roscpp rospy
image_transport std_msgs message_generation sensor_msgs
geometry_msgs )catkin_package( CATKIN_DEPENDS message_runtime std_msgs sensor_msgs geometry_msgs )
这两者有什么区别?
教程里的每一件事我都试着看了一遍,但还是不够清楚。
答案基本上由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 包依赖于此包时,此处给出的参数(即依赖项)很重要。
find_package()
finds dependencies for this package.
catkin_package(CATKIN_DEPENDS)
declares dependencies for packages that depend on this package.
因此在您的示例中,依赖于您的包的任何包都需要以下依赖项:
message_runtime
std_msgs
sensor_msgs
geometry_msgs