diff --git a/CMakeLists.txt b/CMakeLists.txt index 7732a68..3bc733c 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) +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) + qt5_wrap_cpp(_sources ${ARGN}) + set("${out}" ${_sources} PARENT_SCOPE) + endfunction() + endif() +endif() + ## Qt5 boilerplate options from http://doc.qt.io/qt-5/cmake-manual.html set(CMAKE_INCLUDE_CURRENT_DIR ON) @@ -83,8 +97,12 @@ 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) +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") @@ -118,20 +136,32 @@ add_library(${PROJECT_NAME} SHARED src/tf_visual_tools.cpp ) target_compile_definitions(${PROJECT_NAME} PRIVATE _USE_MATH_DEFINES) -target_link_libraries(${PROJECT_NAME} + +set(${PROJECT_NAME}_LINK_LIBRARIES ${PROJECT_NAME}_remote_control - Eigen3::Eigen - 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} + ${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 +) + +if(QT_VERSION_MAJOR STREQUAL "6") + list(APPEND ${PROJECT_NAME}_LINK_LIBRARIES + Qt6::Core5Compat + ) +endif() + +target_link_libraries(${PROJECT_NAME} + ${${PROJECT_NAME}_LINK_LIBRARIES} ) # Library @@ -157,6 +187,7 @@ add_executable(${PROJECT_NAME}_demo target_compile_definitions(${PROJECT_NAME}_demo PRIVATE _USE_MATH_DEFINES) target_link_libraries(${PROJECT_NAME}_demo ${PROJECT_NAME} + ${PROJECT_NAME}_remote_control rclcpp::rclcpp ${geometry_msgs_TARGETS} ${std_msgs_TARGETS} @@ -167,6 +198,7 @@ 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 rclcpp::rclcpp ) @@ -242,6 +274,7 @@ if (BUILD_TESTING) target_compile_definitions(${PROJECT_NAME}_rvt_test PRIVATE _USE_MATH_DEFINES) 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 a0da8aa..d40aa86 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 rviz_visual_tools { 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