利用msg生成头文件时,ROS编译报错:XXX/XXX.h: No such file or directory

2024-08-21 16:44

本文主要是介绍利用msg生成头文件时,ROS编译报错:XXX/XXX.h: No such file or directory,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题:ROS中利用msg文件自动生成头文件未成功,编译报错

我是想让头文件生成在/devel/include里面(可以根据自己的需求改,但是CMakeList.txt和package.xml里面的配置一定要对应)

一、CMakeLists.txt关键配置

1.指定消息文件文件名与自己的文件对应

# 指定消息文件
add_message_files(FILESgps_data.msg
)

2、配置头文件路径

# 包含生成的头文件路径
include_directories(#include                    #ROS包下include文件夹路径${catkin_INCLUDE_DIRS}      #包含std_msg.h等头文件目录${CATKIN_DEVEL_PREFIX}/include  # 包含 devel/include 目录
)

(1)第一条指令include,是指包下的include文件夹,一般用于存放,自己编写的头文件,因为我没有自己写的头文件,所以这里我第一条指令注释了

(2)第二条指令是把std_msg.h等头文件路径包含进去

(3)第三条指令,利用msg自动生成的头文件是存放在/devel/include下,所以将其路径包含进去。

3、声明包的依赖关系

catkin_package(CATKIN_DEPENDS message_runtime std_msgs#INCLUDE_DIRS include ${CATKIN_DEVEL_PREFIX}/include  # 确保包含路径INCLUDE_DIRS ${CATKIN_DEVEL_PREFIX}/include
)

这个指令里面的路径需要和上面对应,因为上面我包含的路径是/devel/include,所以我的路径设置的是第三条指令,如果你上面包含的是ROS包下的include文件夹和/devel/include文件夹,那就用第二条指令,为啥不需要包含 ${catkin_INCLUDE_DIRS} 这个的路径呢?我不知道,据说这个路径省略不写。

二、package.xml配置

package.xml文件中需要包含对message_generation和message_runtime的依赖

<build_depend>message_generation</build_depend>
<exec_depend>message_generation</exec_depend>
<exec_depend>message_runtime</exec_depend>

三、进入工作空间,重现编译(默认roscore了)

cd ~/workspace_name        #进入工作空间
source devel/setup.bash    #配置环境
catkin_make                 #全部重新编译
catkin_make --pkg  package_name   #只编译package_name包

这篇关于利用msg生成头文件时,ROS编译报错:XXX/XXX.h: No such file or directory的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1093716

相关文章

MybatisGenerator文件生成不出对应文件的问题

《MybatisGenerator文件生成不出对应文件的问题》本文介绍了使用MybatisGenerator生成文件时遇到的问题及解决方法,主要步骤包括检查目标表是否存在、是否能连接到数据库、配置生成... 目录MyBATisGenerator 文件生成不出对应文件先在项目结构里引入“targetProje

Python使用qrcode库实现生成二维码的操作指南

《Python使用qrcode库实现生成二维码的操作指南》二维码是一种广泛使用的二维条码,因其高效的数据存储能力和易于扫描的特点,广泛应用于支付、身份验证、营销推广等领域,Pythonqrcode库是... 目录一、安装 python qrcode 库二、基本使用方法1. 生成简单二维码2. 生成带 Log

解决systemctl reload nginx重启Nginx服务报错:Job for nginx.service invalid问题

《解决systemctlreloadnginx重启Nginx服务报错:Jobfornginx.serviceinvalid问题》文章描述了通过`systemctlstatusnginx.se... 目录systemctl reload nginx重启Nginx服务报错:Job for nginx.javas

Python使用Pandas库将Excel数据叠加生成新DataFrame的操作指南

《Python使用Pandas库将Excel数据叠加生成新DataFrame的操作指南》在日常数据处理工作中,我们经常需要将不同Excel文档中的数据整合到一个新的DataFrame中,以便进行进一步... 目录一、准备工作二、读取Excel文件三、数据叠加四、处理重复数据(可选)五、保存新DataFram

VMWare报错“指定的文件不是虚拟磁盘“或“The file specified is not a virtual disk”问题

《VMWare报错“指定的文件不是虚拟磁盘“或“Thefilespecifiedisnotavirtualdisk”问题》文章描述了如何修复VMware虚拟机中出现的“指定的文件不是虚拟... 目录VMWare报错“指定的文件不是虚拟磁盘“或“The file specified is not a virt

SpringBoot生成和操作PDF的代码详解

《SpringBoot生成和操作PDF的代码详解》本文主要介绍了在SpringBoot项目下,通过代码和操作步骤,详细的介绍了如何操作PDF,希望可以帮助到准备通过JAVA操作PDF的你,项目框架用的... 目录本文简介PDF文件简介代码实现PDF操作基于PDF模板生成,并下载完全基于代码生成,并保存合并P

详解Java中如何使用JFreeChart生成甘特图

《详解Java中如何使用JFreeChart生成甘特图》甘特图是一种流行的项目管理工具,用于显示项目的进度和任务分配,在Java开发中,JFreeChart是一个强大的开源图表库,能够生成各种类型的图... 目录引言一、JFreeChart简介二、准备工作三、创建甘特图1. 定义数据集2. 创建甘特图3.

使用Vue.js报错:ReferenceError: “Vue is not defined“ 的原因与解决方案

《使用Vue.js报错:ReferenceError:“Vueisnotdefined“的原因与解决方案》在前端开发中,ReferenceError:Vueisnotdefined是一个常见... 目录一、错误描述二、错误成因分析三、解决方案1. 检查 vue.js 的引入方式2. 验证 npm 安装3.

PHP执行php.exe -v命令报错的解决方案

《PHP执行php.exe-v命令报错的解决方案》:本文主要介绍PHP执行php.exe-v命令报错的解决方案,文中通过图文讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下... 目录执行phpandroid.exe -v命令报错解决方案执行php.exe -v命令报错-PHP War

CentOS系统使用yum命令报错问题及解决

《CentOS系统使用yum命令报错问题及解决》文章主要讲述了在CentOS系统中使用yum命令时遇到的错误,并提供了个人解决方法,希望对大家有所帮助,并鼓励大家支持脚本之家... 目录Centos系统使用yum命令报错找到文件替换源文件为总结CentOS系统使用yum命令报错http://www.cppc