Skip to content

Qt6 Support for nav2 rviz plugins #5570

@mini-1235

Description

@mini-1235

Feature request

Feature description

Today, I did a sudo apt upgrade on my nav2_docker container, it seems like it automatically pulls the qt6 related packages in

qt6-qmltooling-plugins:amd64 (6.4.2+dfsg-4build3, automatic), qml6-module-qt-labs-folderlistmodel:amd64 (6.4.2+dfsg-4build3, automatic), libqt6openglwidgets6t64:amd64 (6.4.2+dfsg-21.1build5, automatic), libb2-1:amd64 (0.98.1-1.1build1, automatic), qml6-module-qtquick-window:amd64 (6.4.2+dfsg-4build3, automatic), qml6-module-qtcharts:amd64 (6.4.2-5build2, automatic), qt6-declarative-dev:amd64 (6.4.2+dfsg-4build3, automatic), libqt6widgets6t64:amd64 (6.4.2+dfsg-21.1build5, automatic), qt6-base-dev-tools:amd64 (6.4.2+dfsg-21.1build5, automatic), qt6-wayland:amd64 (6.4.2-5build3, automatic), qmake6:amd64 (6.4.2+dfsg-21.1build5, automatic), libqt6quickwidgets6:amd64 (6.4.2+dfsg-4build3, automatic), qml6-module-qtqml-workerscript:amd64 (6.4.2+dfsg-4build3, automatic), qmake6-bin:amd64 (6.4.2+dfsg-21.1build5, automatic), libqt6quickparticles6:amd64 (6.4.2+dfsg-4build3, automatic), libqt6serialport6:amd64 (6.4.2-4build2, automatic), qml6-module-qtqml-models:amd64 (6.4.2+dfsg-4build3, automatic), libproxy1v5:amd64 (0.5.4-4build1, automatic), libqt6wlshellintegration6:amd64 (6.4.2-5build3, automatic), qt6-declarative-dev-tools:amd64 (6.4.2+dfsg-4build3, automatic), libqt6positioning6-plugins:amd64 (6.4.2-3build3, automatic), libqt6quicktemplates2-6:amd64 (6.4.2+dfsg-4build3, automatic), libqt6quickshapes6:amd64 (6.4.2+dfsg-4build3, automatic), libqt6jsonrpc6:amd64 (6.4.2-2build2, automatic), libqt6sql6-sqlite:amd64 (6.4.2+dfsg-21.1build5, automatic), qt6-qmllint-plugins:amd64 (6.4.2+dfsg-4build3, automatic), libmtdev-dev:amd64 (1.1.6-1.1build1, automatic), libts0t64:amd64 (1.22-1.1build1, automatic), libqt6quick6:amd64 (6.4.2+dfsg-4build3, automatic), libwebsockets-dev:amd64 (4.3.3-1.1build3, automatic), qml6-module-qtpositioning:amd64 (6.4.2-3build3, automatic), libqt6qmlcore6:amd64 (6.4.2+dfsg-4build3, automatic), libqt6quickcontrols2impl6:amd64 (6.4.2+dfsg-4build3, automatic), qt6-5compat-dev:amd64 (6.4.2-4build3, automatic)

This is causing a build failure in nav2_rviz_plugins

CMake Error at /usr/lib/x86_64-linux-gnu/cmake/Qt6Core/Qt6CoreVersionlessTargets.cmake:42 (message):
  Some (but not all) targets in this export set were already defined.

  Targets Defined: Qt::Core

  Targets not yet defined: Qt::CorePrivate

Call Stack (most recent call first):
  /usr/lib/x86_64-linux-gnu/cmake/Qt6Core/Qt6CoreConfig.cmake:65 (include)
  /usr/share/cmake-3.28/Modules/CMakeFindDependencyMacro.cmake:76 (find_package)
  /usr/lib/x86_64-linux-gnu/cmake/Qt6/QtPublicDependencyHelpers.cmake:108 (find_dependency)
  /usr/lib/x86_64-linux-gnu/cmake/Qt6Widgets/Qt6WidgetsDependencies.cmake:39 (_qt_internal_find_qt_dependencies)
  /usr/lib/x86_64-linux-gnu/cmake/Qt6Widgets/Qt6WidgetsConfig.cmake:50 (include)
  /usr/lib/x86_64-linux-gnu/cmake/Qt6/Qt6Config.cmake:167 (find_package)
  /opt/ros/rolling/share/rviz_common/cmake/rviz_common-extras.cmake:34 (find_package)
  /opt/ros/rolling/share/rviz_common/cmake/rviz_commonConfig.cmake:41 (include)
  CMakeLists.txt:18 (find_package)

Honestly, I am not sure why this is not reported by our CI

Implementation considerations

Since our main branch also needs to support Jazzy, I think we need to support both Qt5 and Qt6, this is also how it is handled in rviz2 ros2/rviz#1187

I have some time tomorrow, so I can give this a try

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions