ros package 由于依赖 msg 导致编译问题解决

2023-05-16

文章目录

    • 1. 问题
    • 2. 解决

1. 问题

经常我们会自定义一些 msg 给其他的 package 使用, 如果正常写 CmakeLists.txt 在编译的时候,就会提示没有找到依赖的 msg.
需要先编译 msg 的 package, 再编译其他的 package , 这就很麻烦

2. 解决

想到 lego-loam 里面也是依赖 cloud_info.msg, 但是编译的时候却不会出现这个问题, 看一下他是怎么写的 CmakeLists.txt 的:

cmake_minimum_required(VERSION 2.8.3)
project(lego_loam)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -O3")

find_package(catkin REQUIRED COMPONENTS
  tf
  roscpp
  rospy
  cv_bridge
  image_transport

  pcl_ros
  pcl_conversions

  std_msgs
  sensor_msgs
  geometry_msgs
  nav_msgs
  cloud_msgs
  common
)

find_package(Boost REQUIRED COMPONENTS system thread timer)
find_package(GTSAM REQUIRED QUIET)
find_package(PCL REQUIRED QUIET)
find_package(OpenCV REQUIRED QUIET)

catkin_package(
  INCLUDE_DIRS include
  CATKIN_DEPENDS cloud_msgs
  DEPENDS PCL
)

include_directories(
	include
	${catkin_INCLUDE_DIRS}
	${PCL_INCLUDE_DIRS}
	${OpenCV_INCLUDE_DIRS}
	${GTSAM_INCLUDE_DIR}
)

link_directories(
	include
	${OpenCV_LIBRARY_DIRS}
	${PCL_LIBRARY_DIRS}
	${GTSAM_LIBRARY_DIRS}
)

add_executable(imageProjection src/imageProjection.cpp)
add_dependencies(imageProjection ${catkin_EXPORTED_TARGETS} cloud_msgs_gencpp)
target_link_libraries(imageProjection ${catkin_LIBRARIES} ${PCL_LIBRARIES} ${OpenCV_LIBRARIES})

add_executable(featureAssociation src/featureAssociation.cpp)
add_dependencies(featureAssociation ${catkin_EXPORTED_TARGETS} cloud_msgs_gencpp)
target_link_libraries(featureAssociation ${catkin_LIBRARIES} ${PCL_LIBRARIES} ${OpenCV_LIBRARIES})

add_executable(mapOptmization src/mapOptmization.cpp)
target_link_libraries(mapOptmization ${catkin_LIBRARIES} ${PCL_LIBRARIES} ${OpenCV_LIBRARIES} gtsam)

add_executable(transformFusion src/transformFusion.cpp)
target_link_libraries(transformFusion ${catkin_LIBRARIES} ${PCL_LIBRARIES} ${OpenCV_LIBRARIES})

可以看到:

add_executable(imageProjection src/imageProjection.cpp)
add_dependencies(imageProjection ${catkin_EXPORTED_TARGETS} cloud_msgs_gencpp)
target_link_libraries(imageProjection ${catkin_LIBRARIES} ${PCL_LIBRARIES} ${OpenCV_LIBRARIES})

多了一行:

add_dependencies(imageProjection ${catkin_EXPORTED_TARGETS} cloud_msgs_gencpp)

使用 add_dependencies 添加了 依赖 cloud_msgs_gencpp

如果缺少 add_dependencies 中对 cloud_msgs_gencpp 的依赖声明,在编译的时候如果先编译imageProjection 包再编译 cloud_msgs 包则会出现报错.

ROS工作空间各个软件包的编译顺序是随机的,此时头文件cloud_msgs/cloud_info.h 还未生成

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ros package 由于依赖 msg 导致编译问题解决 的相关文章

  • Altium Designer -- 精心总结

    如需转载请注明出处 xff1a http blog csdn net qq 29350001 article details 52199356 以前是使用DXP2004来画图的 xff0c 后来转行 想来已经有一年半的时间没有画过了 突然转
  • Arduino点亮ws2812

    先加载ws2812库文件 span style color rgb 68 68 68 font family none font size 14px background color rgb 255 255 255 a target bla
  • Arduino 旋转编码器ky-040

    int pinA 61 3 Connected to CLK on KY 040 CLK接 pin3 int pinB 61 4 Connected to DT on KY 040 DT接pin4 SW是按键 xff0c 不用接 int e
  • Dockerfile

    Dockerfile文件 xff0c 自创镜像 一 概念 xff1a 二 案例 xff1a 1 先创建一个Dockerfile文件2 编写内容3 构建镜像4 运行 三 指令 xff1a FROM xff1a MAINTAINER xff1a
  • 关于嵌入式无人机之模型创建-使用3D打印装配体01

    做嵌入式的同学离不开硬件的支撑 那么无人机作为一套综合性工程 span class token punctuation span 涉及软件 span class token punctuation span 嵌入式 span class t
  • 牢记公式,ardupilot EKF2就是纸老虎(三)!

    版权声明 xff1a 本文为博主原创文章 xff0c 转载请附上博文链接 xff01 三 掀开EKF2的神秘面纱 EKF2是EKF算法在ardupilot上的代码实现 读到这里你也许已经忘了 xff0c EKF的5大公式 虽然下面是7个公式
  • ROS节点 报错process has died [pid 3322522, exit code -11

    偶尔出现 我的情况是两个节点 ros span class token double colon punctuation span span class token function init span span class token p
  • JS的冒泡函数

    今天下午学习了冒泡函数的加载和运行 一 var a 61 20 30 40 20 15 5 25 for var i 61 0 i lt a length i 43 43 for var j 61 1 j lt a length j 43
  • ubuntu server 版安装桌面

    安装xfce4 xff08 或其他桌面 xff09 amp xinit sudo apt install xfce4 xinit安装Display Manager 安装xdm xff0c 虽然有着古早的界面 xff0c 但是不会安装任何依赖
  • ubuntu下gazebo加载很慢解决办法

    ubuntu下gazebo加载很慢解决办法 前言 刚安装好 r o s ros r o s 后 xff0c 在终端输入命令 gazebo 启动 g
  • 从用户态是怎么切换到核心态的?

    此文章参考了 Linux 用户态通过中断切换到内核态详解 简答来说 xff0c 用户态和核心态的区别就是 xff1a 两者的操作权限不同 xff0c 用户态的进程能够访问的资源受到了极大的控制 xff0c 而运行在内核态的进程可以 为所欲为
  • 将rgbd数据集制作成rosbag,并发布图片和camera_info消息

    因为最近做的项目需要和别的开源项目做一些对比 xff0c 比如rgbdslamV2 xff0c 但是rdgbslamV2使用的输入是rosbag xff0c 并且他必须要订阅四个话题才能运行 xff0c 这四个话题分别是 xff1a cam
  • PX4添加自定义日志消息

    固件版本 xff11 11 一 将要观察的数据声明成uORB消息 xff0c 并发布 我这里随便添加了一个 在logged topics cpp里的add default topics函数里加上一行add topic fanbu 100 或
  • ROS常用知识点总结——Cmakelist

    Cmakelist编译规则 1 Cmakelist通常需要添加可执行文件名称 xff0c 并且指定编译的源文件即可 2 添加头文件编译时候 xff0c 应当在Cmakelist文件中打开以下标记出的部分 xff0c 否则编译找不到头文件 C
  • agx xavier rtso1001载板启动

    recovery按键长按 gt reset键按一下 gt 3s后松开recovery键 ubuntu命令行 lsusb lsusb Bus 004 Device 001 ID 1d6b 0003 Linux Foundation 3 0 r
  • 了解卡尔曼滤波器1--状态观测器

    在本文中 xff0c 我们将讨状态观测器 这个概念将有助于解释卡尔曼滤波器是什么以及它是如何工作的 让我们从一个例子开始 这是小蒂米 你想知道他的心情以及他现在的感受 然而 xff0c 没有直接的方法能测量他的心情 所以 xff0c 你要做
  • 牢记公式,ardupilot EKF2就是纸老虎(五)!

    版权声明 xff1a 本文为博主原创文章 xff0c 转载请附上博文链接 xff01 四 一睹EKF2芳容 xff08 上接牢记公式 xff0c ardupilot EKF2就是纸老虎 xff08 四 xff09 xff09 更新 本博客讲
  • jsp页面引入jstl标签后台报java.lang.ArrayIndexOutOfBoundsException

    jsp引用了jstl的core标签和fmt标签 xff0c 但访问jsp时后台报java lang ArrayIndexOutOfBoundsException xff0c 如下图所示 xff1a 花了很长时间上网查找原因也没有找到答案 x
  • 了解卡尔曼滤波器4--非线性状态估算器(EKF,UKF,PF)

    一般来说 xff0c 我们希望我们的生活是线性的 xff0c 就像这条线 xff0c 这可能表示成功 收入或者幸福 但实际上 xff0c 生活并不是线性的 xff0c 它充满了起伏 xff0c 有时甚至更复杂 如果您是工程师 xff0c 您
  • Velodyne VLP16激光雷达在ubuntu中的使用教程

    Velodyne VLP16激光雷达在ubuntu中的使用教程 设备连接工作使用ROS驱动并添加点云客官 xff01 如果觉得有用 xff0c 给俺点赞支持下呗 xff01 设备连接工作 连接雷达有线网络进入有线设置 xff08 点击ubu

随机推荐