diff --git a/CMakeLists.txt b/CMakeLists.txt index 8b45187..ec79f28 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,9 +1,9 @@ -cmake_minimum_required(VERSION 3.5) +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,16 @@ 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 + Qt${QT_VERSION_MAJOR}::Widgets ) -target_link_libraries(${PROJECT_NAME}_gui PUBLIC Qt5::Widgets) + + # prevent pluginlib from using boost target_compile_definitions(${PROJECT_NAME}_gui PUBLIC "PLUGINLIB__DISABLE_BOOST_FUNCTIONS") @@ -98,18 +114,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,22 +134,20 @@ 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 + 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} + eigen_stl_containers::eigen_stl_containers ) # Library @@ -143,15 +157,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 +173,9 @@ 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 + rclcpp::rclcpp + ${geometry_msgs_TARGETS} + ${std_msgs_TARGETS} ) # Demo executable @@ -174,9 +184,7 @@ add_executable(${PROJECT_NAME}_imarker_simple_demo target_compile_definitions(${PROJECT_NAME}_imarker_simple_demo PRIVATE _USE_MATH_DEFINES) target_link_libraries(${PROJECT_NAME}_imarker_simple_demo ${PROJECT_NAME}_imarker_simple -) -ament_target_dependencies(${PROJECT_NAME}_imarker_simple_demo - rclcpp + rclcpp::rclcpp ) ############# @@ -248,11 +256,9 @@ 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} + rclcpp::rclcpp ) endif() diff --git a/src/rviz_visual_tools.cpp b/src/rviz_visual_tools.cpp index d261cb2..3383032 100644 --- a/src/rviz_visual_tools.cpp +++ b/src/rviz_visual_tools.cpp @@ -42,15 +42,18 @@ #include // Conversions -#include -#include -#include #if __has_include() #include #include +#include +#include +#include #else #include #include +#include +#include +#include #endif // Use (void) to silent unused warnings. diff --git a/src/tf_visual_tools.cpp b/src/tf_visual_tools.cpp index 99d7aca..88eac76 100644 --- a/src/tf_visual_tools.cpp +++ b/src/tf_visual_tools.cpp @@ -34,12 +34,13 @@ #include #if __has_include() #include +#include #else #include +#include #endif // TF -#include // C++ #include