Ros搭建service和message时包中CMakelist.txt 的generate_messages

本文介绍了在ROS中如何通过package.xml文件配置依赖项,并展示了如何使用std_msgs这一标准消息包。文章提供了具体命令来查看该消息包的内容。

package.xml中函数

generate_messages(
  DEPENDENCIES
  std_msgs
)
std_msgs 是一个msg包 ,可以用

roscd std_msgs/
切换到std_msgs目录,用下面命令

rosmsg show  *.msg
显示msg文件



### 正确配置 Catkin CMakeLists.txt 文件 在 ROS 工作空间中,`CMakeLists.txt` 是构建系统的核心文件之一,用于定义如何编译代码、安装位置以及其他必要的设置。对于基于 `catkin` 的项目而言,此文件不仅遵循标准的 CMake 规范,还含了特定于 `catkin` 构建系统的指令。 #### 定义最低版本支持的语言特性 为了确保兼容性利用最新特性的能力,在文件开头应声明所需的最小 CMake 版本: ```cmake cmake_minimum_required(VERSION 3.0.2) project(my_robot_project) if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wextra") endif() ``` 上述代码片段设定了最低支持的 CMake 版本为 3.0.2 并启用了 C++11 标准的支持[^1]。 #### 查找并引入所需组件 接着要做的就是调用 `find_package()` 函数来定位加载项目所依赖的各种资源。这一步骤至关重要,因为只有当所有必需项都被成功解析之后才能继续后续操作。特别是针对 `catkin` 类型的工作区来说,至少需要显式地请求对 `catkin` 自身的支持: ```cmake find_package(catkin REQUIRED COMPONENTS roscpp rospy std_msgs message_generation) ``` 这里指明了除了基本的 `catkin` 外还需要 `roscpp`, `rospy`, `std_msgs` 这些常见的 ROS 库以及消息生成工具 `message_generation`[^3]。 #### 设置目标及其属性 一旦所有的外部依赖都准备就绪,则可以开始定义具体的可执行程序或共享库的目标对象了。例如创建一个名为 `${PROJECT_NAME}_node` 的节点应用程序: ```cmake add_executable(${PROJECT_NAME}_node src/my_node.cpp) target_link_libraries(${PROJECT_NAME}_node ${catkin_LIBRARIES}) ``` 这段脚本会告诉 CMake 去寻找位于源码目录下的 `my_node.cpp` 文件,并将其编译成最终的应用二进制形式;同链接上由前面提到过的那些第三方库所提供的接口符号表[^5]。 #### 配置安装规则 最后但同样重要的是设定好各个产物被放置的位置以便日后部署使用。通常情况下我们会采用如下方式完成这项任务: ```cmake install(TARGETS ${PROJECT_NAME}_node DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}) install(DIRECTORY launch/ DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/launch) install(DIRECTORY config/ DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/config) ``` 以上命令分别指示将生成好的可执行文件复制到适当的地方(通常是 `/opt/ros/<distro>/lib/pkg_name/`),并将启动配置文件夹 (`launch`) 及其内部的内容同步至共享区域供其他模块访问[^4]。 #### 添加自定义消息服务类型 如果有新的消息或者服务类型的定义,则需增加相应的处理逻辑以确保它们能够随同整个工程一起被打发布出去: ```cmake add_message_files( FILES MyCustomMsg.msg ) generate_messages( DEPENDENCIES std_msgs ) catkin_package( CATKIN_DEPENDS message_runtime ... ) ``` 此处展示了怎样注册新消息文件并通过 `generate_messages()` 来触发实际的消息转换过程,从而允许跨不同编程语言间的互操作性[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值