如何在ros上编译Qt文件

本文详述在ROS环境中编译Qt应用的步骤与技巧,避免常见错误,如修改catkin_ws工作空间的CMakeLists.txt导致的问题。通过在QtCreator中预编译,再整合到ROS工作空间,确保Qt应用与ROS系统的无缝对接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不知道各位是否在百度上看到很多相似的博客,然后搞得一脸懵逼,还把自己的ros搞坏了,我就是这么过来的。

如果是因为不小心修改了catkin_ws/src的CMakeLists.txt文件的话,请参考我的上一篇博客

或许可解决您的问题:

网址:https://blog.youkuaiyun.com/weixin_44741023/article/details/91467907

然后,对于如何在ros上编译自己的Qt文件,我个人的做法是,现在qtcreator里面编译成功后,直接拿到catkin_ws工作空间让CMakeLists.txt文件再完成编译的。

这里我会介绍我的做法,希望我的文章对您有益。

这里我奇迹般的并没有使用任何ros自带的那些有qt字样的包,这里我给你们看一下我自己的package吧。

  1 <package>
  2   <name>showsituation</name>
  3   <version>0.0.0</version>
  4   <description>The showsituation package</description>
  5 
  6   <maintainer email="weiwie@todo.todo">weiwie</maintainer>
  7 
  8   <license>TODO</license>
  9 
 10   <buildtool_depend>catkin</buildtool_depend>
 11 
 12   <build_depend>roscpp</build_depend>
 13   <build_depend>std_msgs</build_depend>
 14 <!--  <build_depend>qt_gui</build_depend>   -->
 15   <build_depend>message_generation</build_depend>
 16 
 17   <run_depend>roscpp</run_depend>
 18   <run_depend>std_msgs</run_depend>
 19 <!--  <run_depend>qt_gui</run_depend>      -->
 20   <run_depend>message_runtime</run_depend>
 21 
 22 </package>

然后看一下我的CMakeList.txt文件:

  1 cmake_minimum_required(VERSION 2.8.3)
  2 project(showsituation)
  3 
  4 find_package(catkin REQUIRED COMPONENTS
  5   roscpp
  6   std_msgs
  7   message_generation
  8 )
  9 
 10 find_package(Qt5 REQUIRED COMPONENTS Widgets)
 11 set(CMAKE_AUTOMOC ON)
 12 set(CMAKE_AUTOUIC ON)
 13 #这里我的message文件还没有加进去
 14 # add_message_files(
 15 #   FILES
 16 #   Message1.msg
 17 #   Message2.msg
 18 # )
 19 
 20 generate_messages(
 21   DEPENDENCIES
 22   std_msgs
 23   showsituation
 24 )
 25 
 26 catkin_package(
 27   INCLUDE_DIRS include
 28   LIBRARIES showsituation
 29   CATKIN_DEPENDS roscpp std_msgs message_runtime 
 30   DEPENDS system_lib
 31 )
 32 
 33 include_directories(${catkin_INCLUDE_DIRS})
 34 add_executable(showsituation src/situation.cpp src/main.cpp)
 35 target_link_libraries(showsituation ${catkin_LIBRARIES} Qt5::Widgets)
 

下面对部分代码进行解释:

这是找到qt5中的widgets组件的关键步骤,使程序编译时能够找到qt5-widgets相关头文件和库函数。

find_package(Qt5 REQUIRED COMPONENTS Widgets )

 

这两句的是必须的,作用详见以下链接。

set(CMAKE_AUTOMOC ON)      该行代码详见此链接
set(CMAKE_AUTOUIC ON)        该行代码详见此链接

 

在链接环节,告诉目标文件需要qt5的widgets组件作为动态链接库。

target_link_libraries(${PROJECT_NAME}_node Qt5::Widgets )

 

 

希望我的这篇博客对您有所帮助。

本篇博客参考网址:

https://blog.youkuaiyun.com/lingchen2348/article/details/82344924

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值