不知道各位是否在百度上看到很多相似的博客,然后搞得一脸懵逼,还把自己的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