Skip to content

Commit ea17646

Browse files
committed
Qt6 fix
Update CMakeLists.txt Replace ament_target_dependencies with target_link_libraries Signed-off-by: Alejandro Hernandez Cordero <ahcorde@gmail.com>
1 parent d59c454 commit ea17646

File tree

2 files changed

+94
-60
lines changed

2 files changed

+94
-60
lines changed

CMakeLists.txt

Lines changed: 93 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
cmake_minimum_required(VERSION 3.20)
22
project(rviz_visual_tools)
33

4-
# Default to C++14
4+
# Default to C++17
55
if(NOT CMAKE_CXX_STANDARD)
6-
set(CMAKE_CXX_STANDARD 14)
6+
set(CMAKE_CXX_STANDARD 17)
77
endif()
88

99
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
@@ -40,7 +40,21 @@ find_package(rviz_common REQUIRED)
4040
find_package(rviz_rendering REQUIRED)
4141
find_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
4660
set(CMAKE_INCLUDE_CURRENT_DIR ON)
@@ -77,14 +91,21 @@ set(HEADER_FILES
7791
)
7892

7993
add_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
90111
target_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
99120
target_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
)
120141
target_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
140179
add_library(${PROJECT_NAME}_imarker_simple SHARED
@@ -143,15 +182,13 @@ add_library(${PROJECT_NAME}_imarker_simple SHARED
143182
target_compile_definitions(${PROJECT_NAME}_imarker_simple PRIVATE _USE_MATH_DEFINES)
144183
target_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
161198
target_compile_definitions(${PROJECT_NAME}_demo PRIVATE _USE_MATH_DEFINES)
162199
target_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
172208
add_executable(${PROJECT_NAME}_imarker_simple_demo
173209
src/imarker_simple_demo.cpp)
174210
target_compile_definitions(${PROJECT_NAME}_imarker_simple_demo PRIVATE _USE_MATH_DEFINES)
175211
target_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
)
257291
endif()
258292

include/rviz_visual_tools/tf_visual_tools.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
// Eigen
4646
#include <Eigen/Geometry>
4747

48-
#include <tf2_ros/transform_broadcaster.h>
48+
#include <tf2_ros/transform_broadcaster.hpp>
4949

5050
// namespace tf2_ros
5151
// {

0 commit comments

Comments
 (0)