From ea17646e359676dd19df482b18a822ca29a7b4c6 Mon Sep 17 00:00:00 2001 From: mosFet Date: Mon, 23 Jun 2025 11:23:13 +0100 Subject: [PATCH 1/5] Qt6 fix Update CMakeLists.txt Replace ament_target_dependencies with target_link_libraries Signed-off-by: Alejandro Hernandez Cordero --- CMakeLists.txt | 152 +++++++++++------- include/rviz_visual_tools/tf_visual_tools.hpp | 2 +- 2 files changed, 94 insertions(+), 60 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1dab9b2..02880a3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,9 +1,9 @@ cmake_minimum_required(VERSION 3.20) project(rviz_visual_tools) -# Default to C++14 +# Default to C++17 if(NOT CMAKE_CXX_STANDARD) - set(CMAKE_CXX_STANDARD 14) + set(CMAKE_CXX_STANDARD 17) endif() if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") @@ -40,7 +40,21 @@ find_package(rviz_common REQUIRED) find_package(rviz_rendering REQUIRED) find_package(rviz_default_plugins REQUIRED) -find_package(Qt5 REQUIRED COMPONENTS Widgets) + +find_package(QT NAMES Qt6 Qt5 COMPONENTS Test Widgets) + +if(Qt${QT_VERSION_MAJOR} STREQUAL "6") + find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Test Widgets Core5Compat) + if(${QT_VERSION} VERSION_LESS 5.15.0) + function(qt_wrap_cpp out) + qt5_wrap_cpp(_sources ${ARGN}) + set("${out}" ${_sources} PARENT_SCOPE) + endfunction() + endif() +elseif()#Qt5 + find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Test Widgets) +endif() + ## Qt5 boilerplate options from http://doc.qt.io/qt-5/cmake-manual.html set(CMAKE_INCLUDE_CURRENT_DIR ON) @@ -77,14 +91,21 @@ set(HEADER_FILES ) add_library(${PROJECT_NAME}_gui SHARED ${SOURCE_FILES} ${HEADER_FILES}) -ament_target_dependencies(${PROJECT_NAME}_gui PUBLIC - rclcpp - rviz_common - rviz_rendering - rviz_default_plugins - rviz_ogre_vendor +target_link_libraries(${PROJECT_NAME}_gui PUBLIC + rclcpp::rclcpp + rviz_common::rviz_common + rviz_rendering::rviz_rendering + rviz_default_plugins::rviz_default_plugins + rviz_ogre_vendor::OgreMain + Qt5::Widgets ) -target_link_libraries(${PROJECT_NAME}_gui PUBLIC Qt5::Widgets) +if(Qt${QT_VERSION_MAJOR} STREQUAL "6") + target_link_libraries(${PROJECT_NAME}_gui PUBLIC Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Core5Compat ${PROJECT_NAME}_remote_control) +elseif() + target_link_libraries(${PROJECT_NAME}_gui PUBLIC Qt${QT_VERSION_MAJOR}::Widgets ${PROJECT_NAME}_remote_control) +endif() + + # prevent pluginlib from using boost target_compile_definitions(${PROJECT_NAME}_gui PUBLIC "PLUGINLIB__DISABLE_BOOST_FUNCTIONS") @@ -98,18 +119,18 @@ add_library(${PROJECT_NAME}_remote_control SHARED # Needed for M_PI on Windows target_compile_definitions(${PROJECT_NAME}_remote_control PRIVATE _USE_MATH_DEFINES) -ament_target_dependencies(${PROJECT_NAME}_remote_control - rclcpp - rclcpp_components - visualization_msgs - tf2 - tf2_eigen - tf2_geometry_msgs - sensor_msgs - shape_msgs - std_msgs - trajectory_msgs - eigen_stl_containers +target_link_libraries(${PROJECT_NAME}_remote_control + rclcpp::rclcpp + rclcpp_components::component + ${visualization_msgs_TARGETS} + tf2::tf2 + tf2_eigen::tf2_eigen + ${tf2_geometry_msgs_TARGETS} + ${sensor_msgs_TARGETS} + ${shape_msgs_TARGETS} + ${std_msgs_TARGETS} + ${trajectory_msgs_TARGETS} + eigen_stl_containers::eigen_stl_containers ) # Visualization Tools Library @@ -118,23 +139,41 @@ add_library(${PROJECT_NAME} SHARED src/tf_visual_tools.cpp ) target_compile_definitions(${PROJECT_NAME} PRIVATE _USE_MATH_DEFINES) -ament_target_dependencies(${PROJECT_NAME} PUBLIC Eigen3) -target_link_libraries(${PROJECT_NAME} - ${PROJECT_NAME}_remote_control -) -ament_target_dependencies(${PROJECT_NAME} - rclcpp - rclcpp_components - visualization_msgs - tf2 - tf2_eigen - tf2_geometry_msgs - sensor_msgs - shape_msgs - std_msgs - trajectory_msgs - eigen_stl_containers -) + +if(Qt${QT_VERSION_MAJOR} STREQUAL "6") + target_link_libraries(${PROJECT_NAME} + ${PROJECT_NAME}_remote_control + Qt${QT_VERSION_MAJOR}::Core5Compat + ${sensor_msgs_TARGETS} + ${shape_msgs_TARGETS} + ${std_msgs_TARGETS} + ${trajectory_msgs_TARGETS} + ${visualization_msgs_TARGETS} + eigen_stl_containers::eigen_stl_containers + rclcpp::rclcpp + rclcpp_components::component + rclcpp_components::component_manager + sensor_msgs::sensor_msgs_library + tf2::tf2 + tf2_eigen::tf2_eigen + tf2_geometry_msgs::tf2_geometry_msgs + ) +else() + target_link_libraries(${PROJECT_NAME} ${PROJECT_NAME}_remote_control + ${sensor_msgs_TARGETS} + ${shape_msgs_TARGETS} + ${std_msgs_TARGETS} + ${trajectory_msgs_TARGETS} + ${visualization_msgs_TARGETS} + eigen_stl_containers::eigen_stl_containers + rclcpp::rclcpp + rclcpp_components::component + rclcpp_components::component_manager + sensor_msgs::sensor_msgs_library + tf2::tf2 + tf2_eigen::tf2_eigen + tf2_geometry_msgs::tf2_geometry_msgs) +endif() # Library add_library(${PROJECT_NAME}_imarker_simple SHARED @@ -143,15 +182,13 @@ add_library(${PROJECT_NAME}_imarker_simple SHARED target_compile_definitions(${PROJECT_NAME}_imarker_simple PRIVATE _USE_MATH_DEFINES) target_link_libraries(${PROJECT_NAME}_imarker_simple ${PROJECT_NAME} -) -ament_target_dependencies(${PROJECT_NAME}_imarker_simple - rclcpp - interactive_markers - geometry_msgs - visualization_msgs - sensor_msgs - eigen_stl_containers - Eigen3 + rclcpp::rclcpp + interactive_markers::interactive_markers + ${geometry_msgs_TARGETS} + ${visualization_msgs_TARGETS} + ${sensor_msgs_TARGETS} + eigen_stl_containers::eigen_stl_containers + Eigen3::Eigen ) # Demo executable @@ -161,11 +198,10 @@ add_executable(${PROJECT_NAME}_demo target_compile_definitions(${PROJECT_NAME}_demo PRIVATE _USE_MATH_DEFINES) target_link_libraries(${PROJECT_NAME}_demo ${PROJECT_NAME} -) -ament_target_dependencies(${PROJECT_NAME}_demo - rclcpp - geometry_msgs - std_msgs + ${PROJECT_NAME}_remote_control + rclcpp::rclcpp + ${geometry_msgs_TARGETS} + ${std_msgs_TARGETS} ) # Demo executable @@ -173,10 +209,9 @@ add_executable(${PROJECT_NAME}_imarker_simple_demo src/imarker_simple_demo.cpp) target_compile_definitions(${PROJECT_NAME}_imarker_simple_demo PRIVATE _USE_MATH_DEFINES) target_link_libraries(${PROJECT_NAME}_imarker_simple_demo + ${PROJECT_NAME}_remote_control ${PROJECT_NAME}_imarker_simple -) -ament_target_dependencies(${PROJECT_NAME}_imarker_simple_demo - rclcpp + rclcpp::rclcpp ) ############# @@ -248,11 +283,10 @@ if (BUILD_TESTING) tests/rvt_test.cpp TIMEOUT 180) target_compile_definitions(${PROJECT_NAME}_rvt_test PRIVATE _USE_MATH_DEFINES) - ament_target_dependencies(${PROJECT_NAME}_rvt_test - rclcpp - ) target_link_libraries(${PROJECT_NAME}_rvt_test ${PROJECT_NAME} + ${PROJECT_NAME}_remote_control + rclcpp::rclcpp ) endif() diff --git a/include/rviz_visual_tools/tf_visual_tools.hpp b/include/rviz_visual_tools/tf_visual_tools.hpp index 745c005..f07b8bb 100644 --- a/include/rviz_visual_tools/tf_visual_tools.hpp +++ b/include/rviz_visual_tools/tf_visual_tools.hpp @@ -45,7 +45,7 @@ // Eigen #include -#include +#include // namespace tf2_ros // { From de3e489ffc49207de2d33d8a28e362d2168db297 Mon Sep 17 00:00:00 2001 From: mosfet80 <10235105+mosfet80@users.noreply.github.com> Date: Wed, 7 Jan 2026 14:09:31 +0100 Subject: [PATCH 2/5] Update CMakeLists.txt --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 02880a3..14be4e2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -51,7 +51,7 @@ if(Qt${QT_VERSION_MAJOR} STREQUAL "6") set("${out}" ${_sources} PARENT_SCOPE) endfunction() endif() -elseif()#Qt5 +else()#Qt5 find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Test Widgets) endif() From 5824f63bb5fb0e85d8fc2824b2104cedd13b9f89 Mon Sep 17 00:00:00 2001 From: mosfet80 <10235105+mosfet80@users.noreply.github.com> Date: Thu, 15 Jan 2026 23:45:30 +0100 Subject: [PATCH 3/5] Remove Qt5::Widgets from target link libraries --- CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4cb472e..f1be26c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -97,7 +97,6 @@ target_link_libraries(${PROJECT_NAME}_gui PUBLIC rviz_rendering::rviz_rendering rviz_default_plugins::rviz_default_plugins rviz_ogre_vendor::OgreMain - Qt5::Widgets ) if(Qt${QT_VERSION_MAJOR} STREQUAL "6") target_link_libraries(${PROJECT_NAME}_gui PUBLIC Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Core5Compat ${PROJECT_NAME}_remote_control) From cd8645471d830c4a4dba009ad920cacbc8bdbcdd Mon Sep 17 00:00:00 2001 From: mosfet80 <10235105+mosfet80@users.noreply.github.com> Date: Fri, 16 Jan 2026 01:19:56 +0100 Subject: [PATCH 4/5] Fix indentation in CMakeLists.txt for Qt version check --- CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f1be26c..3bc733c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -45,14 +45,14 @@ find_package(QT NAMES Qt6 Qt5 COMPONENTS Test Widgets) if(Qt${QT_VERSION_MAJOR} STREQUAL "6") find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Test Widgets Core5Compat) +else()#Qt5 + find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Test Widgets) if(${QT_VERSION} VERSION_LESS 5.15.0) - function(qt_wrap_cpp out) + function(qt_wrap_cpp out) qt5_wrap_cpp(_sources ${ARGN}) set("${out}" ${_sources} PARENT_SCOPE) endfunction() endif() -else()#Qt5 - find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Test Widgets) endif() From 5fc0c86b8a336c360a148f90377580e855768be6 Mon Sep 17 00:00:00 2001 From: Alejandro Hernandez Cordero Date: Mon, 19 Jan 2026 15:47:20 +0100 Subject: [PATCH 5/5] update package.zml Signed-off-by: Alejandro Hernandez Cordero --- package.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.xml b/package.xml index baa6449..44fc4d0 100644 --- a/package.xml +++ b/package.xml @@ -39,11 +39,11 @@ std_msgs trajectory_msgs - qtbase5-dev + qt6-base-dev eigen eigen - libqt5-widgets + libqt6widgets6t64 ament_index_python