利用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

相关文章

idea突然报错Malformed \uxxxx encoding问题及解决

《idea突然报错Malformeduxxxxencoding问题及解决》Maven项目在切换Git分支时报错,提示project元素为描述符根元素,解决方法:删除Maven仓库中的resolv... 目www.chinasem.cn录问题解决方式总结问题idea 上的 maven China编程项目突然报错,是

k8s admin用户生成token方式

《k8sadmin用户生成token方式》用户使用Kubernetes1.28创建admin命名空间并部署,通过ClusterRoleBinding为jenkins用户授权集群级权限,生成并获取其t... 目录k8s admin用户生成token创建一个admin的命名空间查看k8s namespace 的

linux查找java项目日志查找报错信息方式

《linux查找java项目日志查找报错信息方式》日志查找定位步骤:进入项目,用tail-f实时跟踪日志,tail-n1000查看末尾1000行,grep搜索关键词或时间,vim内精准查找并高亮定位,... 目录日志查找定位在当前文件里找到报错消息总结日志查找定位1.cd 进入项目2.正常日志 和错误日

Vue3 如何通过json配置生成查询表单

《Vue3如何通过json配置生成查询表单》本文给大家介绍Vue3如何通过json配置生成查询表单,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录功能实现背景项目代码案例功能实现背景通过vue3实现后台管理项目一定含有表格功能,通常离不开表单

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

解决升级JDK报错:module java.base does not“opens java.lang.reflect“to unnamed module问题

《解决升级JDK报错:modulejava.basedoesnot“opensjava.lang.reflect“tounnamedmodule问题》SpringBoot启动错误源于Jav... 目录问题描述原因分析解决方案总结问题描述启动sprintboot时报以下错误原因分析编程异js常是由Ja

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

解决Nginx启动报错Job for nginx.service failed because the control process exited with error code问题

《解决Nginx启动报错Jobfornginx.servicefailedbecausethecontrolprocessexitedwitherrorcode问题》Nginx启... 目录一、报错如下二、解决原因三、解决方式总结一、报错如下Job for nginx.service failed bec

C#使用Spire.XLS快速生成多表格Excel文件

《C#使用Spire.XLS快速生成多表格Excel文件》在日常开发中,我们经常需要将业务数据导出为结构清晰的Excel文件,本文将手把手教你使用Spire.XLS这个强大的.NET组件,只需几行C#... 目录一、Spire.XLS核心优势清单1.1 性能碾压:从3秒到0.5秒的质变1.2 批量操作的优雅

Python使用python-pptx自动化操作和生成PPT

《Python使用python-pptx自动化操作和生成PPT》这篇文章主要为大家详细介绍了如何使用python-pptx库实现PPT自动化,并提供实用的代码示例和应用场景,感兴趣的小伙伴可以跟随小编... 目录使用python-pptx操作PPT文档安装python-pptx基础概念创建新的PPT文档查看