11cmake_minimum_required (VERSION 3.20)
22project (rviz_visual_tools)
33
4- # Default to C++14
4+ # Default to C++17
55if (NOT CMAKE_CXX_STANDARD)
6- set (CMAKE_CXX_STANDARD 14 )
6+ set (CMAKE_CXX_STANDARD 17 )
77endif ()
88
99if (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
@@ -40,7 +40,21 @@ find_package(rviz_common REQUIRED)
4040find_package (rviz_rendering REQUIRED)
4141find_package (rviz_default_plugins REQUIRED)
4242
43- find_package (Qt5 REQUIRED COMPONENTS Widgets)
43+
44+ find_package (QT NAMES Qt6 Qt5 COMPONENTS Test Widgets)
45+
46+ if (Qt${QT_VERSION_MAJOR} STREQUAL "6" )
47+ find_package (Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Test Widgets Core5Compat)
48+ if (${QT_VERSION} VERSION_LESS 5.15.0)
49+ function (qt_wrap_cpp out)
50+ qt5_wrap_cpp(_sources ${ARGN} )
51+ set ("${out} " ${_sources} PARENT_SCOPE)
52+ endfunction ()
53+ endif ()
54+ elseif ()#Qt5
55+ find_package (Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Test Widgets)
56+ endif ()
57+
4458
4559## Qt5 boilerplate options from http://doc.qt.io/qt-5/cmake-manual.html
4660set (CMAKE_INCLUDE_CURRENT_DIR ON )
@@ -77,14 +91,21 @@ set(HEADER_FILES
7791 )
7892
7993add_library (${PROJECT_NAME} _gui SHARED ${SOURCE_FILES} ${HEADER_FILES} )
80- ament_target_dependencies(${PROJECT_NAME} _gui PUBLIC
81- rclcpp
82- rviz_common
83- rviz_rendering
84- rviz_default_plugins
85- rviz_ogre_vendor
94+ target_link_libraries (${PROJECT_NAME} _gui PUBLIC
95+ rclcpp::rclcpp
96+ rviz_common::rviz_common
97+ rviz_rendering::rviz_rendering
98+ rviz_default_plugins::rviz_default_plugins
99+ rviz_ogre_vendor::OgreMain
100+ Qt5::Widgets
86101)
87- target_link_libraries (${PROJECT_NAME} _gui PUBLIC Qt5::Widgets)
102+ if (Qt${QT_VERSION_MAJOR} STREQUAL "6" )
103+ target_link_libraries (${PROJECT_NAME} _gui PUBLIC Qt${QT_VERSION_MAJOR} ::Widgets Qt${QT_VERSION_MAJOR} ::Core5Compat ${PROJECT_NAME} _remote_control)
104+ elseif ()
105+ target_link_libraries (${PROJECT_NAME} _gui PUBLIC Qt${QT_VERSION_MAJOR} ::Widgets ${PROJECT_NAME} _remote_control)
106+ endif ()
107+
108+
88109
89110# prevent pluginlib from using boost
90111target_compile_definitions (${PROJECT_NAME} _gui PUBLIC "PLUGINLIB__DISABLE_BOOST_FUNCTIONS" )
@@ -98,18 +119,18 @@ add_library(${PROJECT_NAME}_remote_control SHARED
98119# Needed for M_PI on Windows
99120target_compile_definitions (${PROJECT_NAME} _remote_control PRIVATE _USE_MATH_DEFINES)
100121
101- ament_target_dependencies (${PROJECT_NAME} _remote_control
102- rclcpp
103- rclcpp_components
104- visualization_msgs
105- tf2
106- tf2_eigen
107- tf2_geometry_msgs
108- sensor_msgs
109- shape_msgs
110- std_msgs
111- trajectory_msgs
112- eigen_stl_containers
122+ target_link_libraries (${PROJECT_NAME} _remote_control
123+ rclcpp::rclcpp
124+ rclcpp_components:: component
125+ ${visualization_msgs_TARGETS}
126+ tf2::tf2
127+ tf2_eigen::tf2_eigen
128+ ${tf2_geometry_msgs_TARGETS}
129+ ${sensor_msgs_TARGETS}
130+ ${shape_msgs_TARGETS}
131+ ${std_msgs_TARGETS}
132+ ${trajectory_msgs_TARGETS}
133+ eigen_stl_containers::eigen_stl_containers
113134)
114135
115136# Visualization Tools Library
@@ -118,23 +139,41 @@ add_library(${PROJECT_NAME} SHARED
118139 src/tf_visual_tools.cpp
119140)
120141target_compile_definitions (${PROJECT_NAME} PRIVATE _USE_MATH_DEFINES)
121- ament_target_dependencies(${PROJECT_NAME} PUBLIC Eigen3)
122- target_link_libraries (${PROJECT_NAME}
123- ${PROJECT_NAME} _remote_control
124- )
125- ament_target_dependencies(${PROJECT_NAME}
126- rclcpp
127- rclcpp_components
128- visualization_msgs
129- tf2
130- tf2_eigen
131- tf2_geometry_msgs
132- sensor_msgs
133- shape_msgs
134- std_msgs
135- trajectory_msgs
136- eigen_stl_containers
137- )
142+
143+ if (Qt${QT_VERSION_MAJOR} STREQUAL "6" )
144+ target_link_libraries (${PROJECT_NAME}
145+ ${PROJECT_NAME} _remote_control
146+ Qt${QT_VERSION_MAJOR} ::Core5Compat
147+ ${sensor_msgs_TARGETS}
148+ ${shape_msgs_TARGETS}
149+ ${std_msgs_TARGETS}
150+ ${trajectory_msgs_TARGETS}
151+ ${visualization_msgs_TARGETS}
152+ eigen_stl_containers::eigen_stl_containers
153+ rclcpp::rclcpp
154+ rclcpp_components::component
155+ rclcpp_components::component_manager
156+ sensor_msgs::sensor_msgs_library
157+ tf2::tf2
158+ tf2_eigen::tf2_eigen
159+ tf2_geometry_msgs::tf2_geometry_msgs
160+ )
161+ else ()
162+ target_link_libraries (${PROJECT_NAME} ${PROJECT_NAME} _remote_control
163+ ${sensor_msgs_TARGETS}
164+ ${shape_msgs_TARGETS}
165+ ${std_msgs_TARGETS}
166+ ${trajectory_msgs_TARGETS}
167+ ${visualization_msgs_TARGETS}
168+ eigen_stl_containers::eigen_stl_containers
169+ rclcpp::rclcpp
170+ rclcpp_components::component
171+ rclcpp_components::component_manager
172+ sensor_msgs::sensor_msgs_library
173+ tf2::tf2
174+ tf2_eigen::tf2_eigen
175+ tf2_geometry_msgs::tf2_geometry_msgs)
176+ endif ()
138177
139178# Library
140179add_library (${PROJECT_NAME} _imarker_simple SHARED
@@ -143,15 +182,13 @@ add_library(${PROJECT_NAME}_imarker_simple SHARED
143182target_compile_definitions (${PROJECT_NAME} _imarker_simple PRIVATE _USE_MATH_DEFINES)
144183target_link_libraries (${PROJECT_NAME} _imarker_simple
145184 ${PROJECT_NAME}
146- )
147- ament_target_dependencies(${PROJECT_NAME} _imarker_simple
148- rclcpp
149- interactive_markers
150- geometry_msgs
151- visualization_msgs
152- sensor_msgs
153- eigen_stl_containers
154- Eigen3
185+ rclcpp::rclcpp
186+ interactive_markers::interactive_markers
187+ ${geometry_msgs_TARGETS}
188+ ${visualization_msgs_TARGETS}
189+ ${sensor_msgs_TARGETS}
190+ eigen_stl_containers::eigen_stl_containers
191+ Eigen3::Eigen
155192)
156193
157194# Demo executable
@@ -161,22 +198,20 @@ add_executable(${PROJECT_NAME}_demo
161198target_compile_definitions (${PROJECT_NAME} _demo PRIVATE _USE_MATH_DEFINES)
162199target_link_libraries (${PROJECT_NAME} _demo
163200 ${PROJECT_NAME}
164- )
165- ament_target_dependencies(${PROJECT_NAME} _demo
166- rclcpp
167- geometry_msgs
168- std_msgs
201+ ${PROJECT_NAME} _remote_control
202+ rclcpp::rclcpp
203+ ${geometry_msgs_TARGETS}
204+ ${std_msgs_TARGETS}
169205)
170206
171207# Demo executable
172208add_executable (${PROJECT_NAME} _imarker_simple_demo
173209 src/imarker_simple_demo.cpp)
174210target_compile_definitions (${PROJECT_NAME} _imarker_simple_demo PRIVATE _USE_MATH_DEFINES)
175211target_link_libraries (${PROJECT_NAME} _imarker_simple_demo
212+ ${PROJECT_NAME} _remote_control
176213 ${PROJECT_NAME} _imarker_simple
177- )
178- ament_target_dependencies(${PROJECT_NAME} _imarker_simple_demo
179- rclcpp
214+ rclcpp::rclcpp
180215)
181216
182217#############
@@ -248,11 +283,10 @@ if (BUILD_TESTING)
248283 tests/rvt_test.cpp
249284 TIMEOUT 180)
250285 target_compile_definitions (${PROJECT_NAME} _rvt_test PRIVATE _USE_MATH_DEFINES)
251- ament_target_dependencies(${PROJECT_NAME} _rvt_test
252- rclcpp
253- )
254286 target_link_libraries (${PROJECT_NAME} _rvt_test
255287 ${PROJECT_NAME}
288+ ${PROJECT_NAME} _remote_control
289+ rclcpp::rclcpp
256290 )
257291endif ()
258292
0 commit comments