Skip to content

Commit 9583ec7

Browse files
authored
Add rclcpp_components::component (#1855)
Signed-off-by: Shane Loretz <sloretz@osrfoundation.org>
1 parent 2d6e636 commit 9583ec7

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

rclcpp_components/CMakeLists.txt

+12-6
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,15 @@ find_package(composition_interfaces REQUIRED)
2020
find_package(rclcpp REQUIRED)
2121
find_package(rcpputils REQUIRED)
2222

23+
# Add an interface library that can be dependend upon by libraries who register components
24+
add_library(component INTERFACE)
25+
target_include_directories(component INTERFACE
26+
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
27+
"$<INSTALL_INTERFACE:include>")
28+
target_link_libraries(component INTERFACE
29+
class_loader::class_loader
30+
rclcpp::rclcpp)
31+
2332
add_library(
2433
component_manager
2534
SHARED
@@ -87,10 +96,7 @@ if(BUILD_TESTING)
8796

8897
set(components "")
8998
add_library(test_component SHARED test/components/test_component.cpp)
90-
target_include_directories(test_component PUBLIC include)
91-
ament_target_dependencies(test_component
92-
"class_loader"
93-
"rclcpp")
99+
target_link_libraries(test_component PRIVATE component)
94100
#rclcpp_components_register_nodes(test_component "test_rclcpp_components::TestComponent")
95101
set(components "${components}test_rclcpp_components::TestComponentFoo;$<TARGET_FILE:test_component>\n")
96102
set(components "${components}test_rclcpp_components::TestComponentBar;$<TARGET_FILE:test_component>\n")
@@ -138,7 +144,7 @@ if(BUILD_TESTING)
138144
endif()
139145

140146
install(
141-
TARGETS component_manager EXPORT component_manager
147+
TARGETS component component_manager EXPORT export_${PROJECT_NAME}
142148
ARCHIVE DESTINATION lib
143149
LIBRARY DESTINATION lib
144150
RUNTIME DESTINATION bin
@@ -165,7 +171,7 @@ install(
165171
# specific order: dependents before dependencies
166172
ament_export_include_directories(include)
167173
ament_export_libraries(component_manager)
168-
ament_export_targets(component_manager)
174+
ament_export_targets(export_${PROJECT_NAME})
169175
ament_export_dependencies(ament_index_cpp)
170176
ament_export_dependencies(class_loader)
171177
ament_export_dependencies(composition_interfaces)

0 commit comments

Comments
 (0)