@@ -54,6 +54,7 @@ find_package(tf2_ros REQUIRED)
5454find_package (amrl_msgs REQUIRED )
5555find_package (amrl_maps REQUIRED )
5656find_package (rosidl_default_generators REQUIRED )
57+ find_package (rosidl_default_runtime REQUIRED )
5758
5859FIND_PACKAGE (Qt5 COMPONENTS Core Widgets Gui WebSockets OpenGL REQUIRED )
5960SET (CMAKE_INCLUDE_CURRENT_DIR ON )
@@ -80,6 +81,24 @@ rosidl_generate_interfaces(${PROJECT_NAME}
8081 DEPENDENCIES geometry_msgs std_msgs sensor_msgs visualization_msgs nav_msgs
8182)
8283
84+ # Ensure generated message headers are visible to targets in this package
85+ include_directories (${CMAKE_CURRENT_BINARY_DIR } /rosidl_generator_cpp )
86+
87+ # Provide the rosidl fastrtps C++ typesupport target for linking against the
88+ # generated type support library for this package's messages.
89+ ## Link helper that prefers the generated FastRTPS C++ typesupport target for
90+ ## this package, but falls back to the introspection C++ typesupport if the
91+ ## fastrtps target isn't available. The generated target names use the
92+ ## convention: <pkg>__rosidl_typesupport_fastrtps_cpp.
93+ ## Candidate package-specific rosidl typesupport targets. Use generator
94+ ## expressions so CMake will link whichever one was generated for this
95+ ## package (fastrtps, introspection, or the generic cpp typesupport).
96+ set (UT_AUTOMATA_TYPESUPPORT_LINK
97+ $<TARGET_NAME_IF_EXISTS :${PROJECT_NAME } __rosidl_typesupport_fastrtps_cpp >
98+ $<TARGET_NAME_IF_EXISTS :${PROJECT_NAME } __rosidl_typesupport_introspection_cpp >
99+ $<TARGET_NAME_IF_EXISTS :${PROJECT_NAME } __rosidl_typesupport_cpp >
100+ )
101+
83102ADD_SUBDIRECTORY (src/shared )
84103INCLUDE_DIRECTORIES (${PROJECT_SOURCE_DIR } /src/shared )
85104
@@ -96,27 +115,33 @@ IF(${CMAKE_BUILD_MODE} MATCHES "Hardware")
96115 src/vesc_driver/vesc_interface.cpp
97116 src/vesc_driver/vesc_packet.cpp
98117 src/vesc_driver/vesc_packet_factory.cpp )
99- ament_target_dependencies (vesc_driver rclcpp std_msgs geometry_msgs nav_msgs sensor_msgs amrl_msgs )
100- target_link_libraries (vesc_driver ${libs} )
118+ ament_target_dependencies (vesc_driver rclcpp std_msgs geometry_msgs nav_msgs sensor_msgs amrl_msgs rosidl_default_runtime )
119+ target_include_directories (vesc_driver PRIVATE
120+ $<BUILD_INTERFACE :${CMAKE_CURRENT_BINARY_DIR } /rosidl_generator_cpp >)
121+ target_link_libraries (vesc_driver ${libs} ${UT_AUTOMATA_TYPESUPPORT_LINK} )
101122
102123 add_executable (gui
103124 src/gui/gui_main.cc
104125 src/gui/gui_mainwindow.cc
105126 src/gui/vector_display.cc
106127 ${GUI_MOC_SRCS} )
107- ament_target_dependencies (gui rclcpp std_msgs geometry_msgs nav_msgs sensor_msgs amrl_msgs )
128+ ament_target_dependencies (gui rclcpp std_msgs geometry_msgs nav_msgs sensor_msgs amrl_msgs rosidl_default_runtime )
129+ target_include_directories (gui PRIVATE
130+ $<BUILD_INTERFACE :${CMAKE_CURRENT_BINARY_DIR } /rosidl_generator_cpp >)
108131 TARGET_LINK_LIBRARIES (gui
109132 Qt5::Core
110133 Qt5::Gui
111134 Qt5::Widgets
112135 Qt5::OpenGL
113- ${libs} ${OPENGL_LIBRARY} GL )
136+ ${libs} ${OPENGL_LIBRARY} GL ${UT_AUTOMATA_TYPESUPPORT_LINK} )
114137
115138 add_executable (joystick
116139 src/joystick/joystick.cc
117140 src/joystick/joystick_driver.cc )
118- ament_target_dependencies (joystick rclcpp std_msgs geometry_msgs nav_msgs sensor_msgs amrl_msgs )
119- target_link_libraries (joystick ${libs} )
141+ ament_target_dependencies (joystick rclcpp std_msgs geometry_msgs nav_msgs sensor_msgs amrl_msgs rosidl_default_runtime )
142+ target_include_directories (joystick PRIVATE
143+ $<BUILD_INTERFACE :${CMAKE_CURRENT_BINARY_DIR } /rosidl_generator_cpp >)
144+ target_link_libraries (joystick ${libs} ${UT_AUTOMATA_TYPESUPPORT_LINK} )
120145
121146 # Install hardware executables for ROS 2
122147 install (TARGETS
@@ -132,27 +157,33 @@ add_executable(simulator
132157 src/simulator/simulator.cc
133158 src/simulator/vector_map.cc
134159 src/simulator/simulator_main.cc )
135- ament_target_dependencies (simulator rclcpp ament_index_cpp std_msgs geometry_msgs nav_msgs sensor_msgs visualization_msgs amrl_msgs tf2 tf2_geometry_msgs tf2_ros )
136- target_link_libraries (simulator ${libs} )
160+ ament_target_dependencies (simulator rclcpp ament_index_cpp std_msgs geometry_msgs nav_msgs sensor_msgs visualization_msgs amrl_msgs tf2 tf2_geometry_msgs tf2_ros rosidl_default_runtime )
161+ target_include_directories (simulator PRIVATE
162+ $<BUILD_INTERFACE :${CMAKE_CURRENT_BINARY_DIR } /rosidl_generator_cpp >)
163+ target_link_libraries (simulator ${libs} ${UT_AUTOMATA_TYPESUPPORT_LINK} )
137164
138165add_executable (step_simulator
139166 src/simulator/simulator.cc
140167 src/simulator/vector_map.cc
141168 src/simulator/step_simulator_main.cc )
142- ament_target_dependencies (step_simulator rclcpp ament_index_cpp std_msgs geometry_msgs nav_msgs sensor_msgs visualization_msgs amrl_msgs tf2 tf2_geometry_msgs tf2_ros )
143- target_link_libraries (step_simulator ${libs} )
169+ ament_target_dependencies (step_simulator rclcpp ament_index_cpp std_msgs geometry_msgs nav_msgs sensor_msgs visualization_msgs amrl_msgs tf2 tf2_geometry_msgs tf2_ros rosidl_default_runtime )
170+ target_include_directories (step_simulator PRIVATE
171+ $<BUILD_INTERFACE :${CMAKE_CURRENT_BINARY_DIR } /rosidl_generator_cpp >)
172+ target_link_libraries (step_simulator ${libs} ${UT_AUTOMATA_TYPESUPPORT_LINK} )
144173
145174add_executable (websocket
146175 src/websocket/websocket_main.cc
147176 src/websocket/websocket.cc
148177)
149- ament_target_dependencies (websocket rclcpp ament_index_cpp std_msgs geometry_msgs nav_msgs sensor_msgs amrl_msgs )
178+ ament_target_dependencies (websocket rclcpp ament_index_cpp std_msgs geometry_msgs nav_msgs sensor_msgs amrl_msgs rosidl_default_runtime )
179+ target_include_directories (websocket PRIVATE
180+ $<BUILD_INTERFACE :${CMAKE_CURRENT_BINARY_DIR } /rosidl_generator_cpp >)
150181target_link_libraries (websocket
151182 Qt5::Core
152183 Qt5::Gui
153184 Qt5::Widgets
154185 Qt5::WebSockets
155- ${libs} )
186+ ${libs} ${UT_AUTOMATA_TYPESUPPORT_LINK } )
156187
157188# Install executables for ROS 2
158189install (TARGETS
0 commit comments