观看下面的视频教程后,
我可以学习如何从Qt Creator打开catkin项目。" 现在我需要制作Qt-Quick应用程序订阅ros主题。 但是,我不知道如何。关于这个问题的一些事实是:
简而言之,请让我知道"如何使用cmake编译qt-quick应用程序。
答案 0 :(得分:1)
这是一个示例CMakeList.txt文件,可用于在ROS中编译QT应用程序。它用于QT5(ros qt包似乎只支持qt4)
要使它与您的项目一起使用,只需替换您的CMakeList.txt文件并更改所有路径/项目名称:
##############################################################################
# CMake
##############################################################################
cmake_minimum_required(VERSION 2.8.0)
project(gui)
##############################################################################
# Catkin
##############################################################################
# qt_build provides the qt cmake glue, roscpp the comms for a default talker
find_package(catkin REQUIRED COMPONENTS qt_build roscpp sensor_msgs image_transport)
set(QML_IMPORT_PATH "${QML_IMPORT_PATH};${CATKIN_GLOBAL_LIB_DESTINATION}" )
set(QML_IMPORT_PATH2 "${QML_IMPORT_PATH};${CATKIN_GLOBAL_LIB_DESTINATION}" )
include_directories(${catkin_INCLUDE_DIRS})
# Use this to define what the package will export (e.g. libs, headers).
# Since the default here is to produce only a binary, we don't worry about
# exporting anything.
catkin_package()
##############################################################################
# Qt Environment
##############################################################################
# this comes from qt_build's qt-ros.cmake which is automatically
# included via the dependency ca ll in package.xml
#rosbuild_prepare_qt4(QtCore QtGui QtQml QtQuick) # Add the appropriate components to the component list here
find_package(Qt5 COMPONENTS Core Gui Qml Quick REQUIRED)
##############################################################################
# Sections
##############################################################################
file(GLOB QT_RESOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} resources/*.qrc)
file(GLOB_RECURSE QT_MOC RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} FOLLOW_SYMLINKS include/gui/*.hpp)
QT5_ADD_RESOURCES(QT_RESOURCES_CPP ${QT_RESOURCES})
QT5_WRAP_CPP(QT_MOC_HPP ${QT_MOC})
##############################################################################
# Sources
##############################################################################
file(GLOB_RECURSE QT_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} FOLLOW_SYMLINKS src/*.cpp)
##############################################################################
# Binaries
##############################################################################
add_executable(gui ${QT_SOURCES} ${QT_RESOURCES_CPP} ${QT_FORMS_HPP} ${QT_MOC_HPP})
qt5_use_modules(gui Quick Core)
target_link_libraries(gui ${QT_LIBRARIES} ${catkin_LIBRARIES})
target_include_directories(gui PUBLIC include)
install(TARGETS gui RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})
source article有更详细的解释。但基本上重要的部分是:
find_package(Qt5 COMPONENTS Core Qml Quick REQUIRED)
其中导入Qt5核心,qml和快速组件。如果您不使用qml,则可以安全地删除该部分。您还应该能够在此处添加其他qml组件。
cmake列表中的其他qt5函数确实像在头文件上运行qt5 prepossessor一样。
答案 1 :(得分:0)
如果您尝试连接Qt GUI界面并与ROS通信,您可以查看此ROS Qt包。 它有一个关于如何实现这一目标的教程和模板。它也可以作为项目的起点。
此外,它还附带了一个ros_create_qt_package命令,该命令可以创建Qt GUI和ROS包的模板,因此您只需按照自己的意愿对其进行成本化。
最后,只需要一个普通的catkin_make,所以你不要迷失在所有不同的make命令之间(感谢CMakeLists!)。
干杯,