Skip to content

Commit 6da8b38

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 6da8b38

File tree

1 file changed

+65
-45
lines changed

1 file changed

+65
-45
lines changed

CMakeLists.txt

Lines changed: 65 additions & 45 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)
104+
elseif()
105+
target_link_libraries(${PROJECT_NAME}_gui PUBLIC Qt${QT_VERSION_MAJOR}::Widgets )
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
@@ -119,9 +140,16 @@ add_library(${PROJECT_NAME} SHARED
119140
)
120141
target_compile_definitions(${PROJECT_NAME} PRIVATE _USE_MATH_DEFINES)
121142
ament_target_dependencies(${PROJECT_NAME} PUBLIC Eigen3)
122-
target_link_libraries(${PROJECT_NAME}
123-
${PROJECT_NAME}_remote_control
124-
)
143+
144+
if(Qt${QT_VERSION_MAJOR} STREQUAL "6")
145+
target_link_libraries(${PROJECT_NAME}
146+
${PROJECT_NAME}_remote_control
147+
Qt${QT_VERSION_MAJOR}::Core5Compat
148+
)
149+
elseif()
150+
target_link_libraries(${PROJECT_NAME} ${PROJECT_NAME}_remote_control)
151+
endif()
152+
125153
ament_target_dependencies(${PROJECT_NAME}
126154
rclcpp
127155
rclcpp_components
@@ -143,15 +171,13 @@ add_library(${PROJECT_NAME}_imarker_simple SHARED
143171
target_compile_definitions(${PROJECT_NAME}_imarker_simple PRIVATE _USE_MATH_DEFINES)
144172
target_link_libraries(${PROJECT_NAME}_imarker_simple
145173
${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
174+
rclcpp::rclcpp
175+
interactive_markers::interactive_markers
176+
${geometry_msgs_TARGETS}
177+
${visualization_msgs_TARGETS}
178+
${sensor_msgs_TARGETS}
179+
eigen_stl_containers::eigen_stl_containers
180+
Eigen3::Eigen
155181
)
156182

157183
# Demo executable
@@ -161,11 +187,9 @@ add_executable(${PROJECT_NAME}_demo
161187
target_compile_definitions(${PROJECT_NAME}_demo PRIVATE _USE_MATH_DEFINES)
162188
target_link_libraries(${PROJECT_NAME}_demo
163189
${PROJECT_NAME}
164-
)
165-
ament_target_dependencies(${PROJECT_NAME}_demo
166-
rclcpp
167-
geometry_msgs
168-
std_msgs
190+
rclcpp::rclcpp
191+
${geometry_msgs_TARGETS}
192+
${std_msgs_TARGETS}
169193
)
170194

171195
# Demo executable
@@ -174,9 +198,7 @@ add_executable(${PROJECT_NAME}_imarker_simple_demo
174198
target_compile_definitions(${PROJECT_NAME}_imarker_simple_demo PRIVATE _USE_MATH_DEFINES)
175199
target_link_libraries(${PROJECT_NAME}_imarker_simple_demo
176200
${PROJECT_NAME}_imarker_simple
177-
)
178-
ament_target_dependencies(${PROJECT_NAME}_imarker_simple_demo
179-
rclcpp
201+
rclcpp::rclcpp
180202
)
181203

182204
#############
@@ -248,11 +270,9 @@ if (BUILD_TESTING)
248270
tests/rvt_test.cpp
249271
TIMEOUT 180)
250272
target_compile_definitions(${PROJECT_NAME}_rvt_test PRIVATE _USE_MATH_DEFINES)
251-
ament_target_dependencies(${PROJECT_NAME}_rvt_test
252-
rclcpp
253-
)
254273
target_link_libraries(${PROJECT_NAME}_rvt_test
255274
${PROJECT_NAME}
275+
rclcpp::rclcpp
256276
)
257277
endif()
258278

0 commit comments

Comments
 (0)