Skip to content

Commit a919a6e

Browse files
authored
Cleanup the dependencies in rclcpp_components. (#2918)
The most important change in here is the changes to the package.xml and the CMakeLists.txt, which now properly export the dependencies to downstream packages as required. On those two fronts: 1. Make sure to add a dependency on rmw, which this package does depend on for rmw_request_id_t 2. Make sure to add a dependency on rcl_interfaces, which this package also depends on. 3. Export depend class_loader, composition_interfaces, rclcpp, rcpputils, and rmw, all of which are exported in the header files. 4. Remove the unnecessary test dependencies on launch_testing and std_msgs, neither of which is used. The rest of the change here is to cleanup the header files to include what you use everywhere. Signed-off-by: Chris Lalancette <[email protected]>
1 parent b7e4aad commit a919a6e

11 files changed

+68
-28
lines changed

rclcpp_components/CMakeLists.txt

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@ find_package(ament_index_cpp REQUIRED)
1919
find_package(class_loader REQUIRED)
2020
find_package(composition_interfaces REQUIRED)
2121
find_package(rclcpp REQUIRED)
22+
find_package(rcl_interfaces REQUIRED)
2223
find_package(rcpputils REQUIRED)
24+
find_package(rmw REQUIRED)
2325

2426
# Add an interface library that can be depended upon by libraries who register components
2527
add_library(component INTERFACE)
@@ -39,13 +41,15 @@ target_include_directories(component_manager PUBLIC
3941
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
4042
"$<INSTALL_INTERFACE:include/${PROJECT_NAME}>")
4143
target_link_libraries(component_manager PUBLIC
44+
class_loader::class_loader
4245
${composition_interfaces_TARGETS}
4346
rclcpp::rclcpp
47+
rmw::rmw
4448
)
4549
target_link_libraries(component_manager PRIVATE
4650
ament_index_cpp::ament_index_cpp
47-
class_loader::class_loader
4851
rcpputils::rcpputils
52+
${rcl_interfaces_TARGETS}
4953
)
5054
target_compile_definitions(component_manager
5155
PRIVATE "RCLCPP_COMPONENTS_BUILDING_LIBRARY")
@@ -54,13 +58,13 @@ add_executable(
5458
component_container
5559
src/component_container.cpp
5660
)
57-
target_link_libraries(component_container component_manager rclcpp::rclcpp)
61+
target_link_libraries(component_container PRIVATE component_manager rclcpp::rclcpp)
5862

5963
add_executable(
6064
component_container_event
6165
src/component_container_event.cpp
6266
)
63-
target_link_libraries(component_container_event component_manager rclcpp::rclcpp)
67+
target_link_libraries(component_container_event PRIVATE component_manager rclcpp::rclcpp)
6468

6569
set(node_main_template_install_dir "share/${PROJECT_NAME}")
6670
install(FILES
@@ -71,19 +75,13 @@ add_executable(
7175
component_container_mt
7276
src/component_container_mt.cpp
7377
)
74-
target_link_libraries(component_container_mt component_manager rclcpp::rclcpp)
78+
target_link_libraries(component_container_mt PRIVATE component_manager rclcpp::rclcpp)
7579

7680
add_executable(
7781
component_container_isolated
7882
src/component_container_isolated.cpp
7983
)
80-
target_link_libraries(component_container_isolated component_manager rclcpp::rclcpp)
81-
82-
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
83-
target_link_libraries(component_container "stdc++fs")
84-
target_link_libraries(component_container_mt "stdc++fs")
85-
target_link_libraries(component_container_isolated "stdc++fs")
86-
endif()
84+
target_link_libraries(component_container_isolated PRIVATE component_manager rclcpp::rclcpp)
8785

8886
if(BUILD_TESTING)
8987
find_package(ament_lint_auto REQUIRED)
@@ -174,9 +172,5 @@ ament_export_libraries(component_manager)
174172
# Export modern CMake targets
175173
ament_export_targets(export_${PROJECT_NAME})
176174

177-
# specific order: dependents before dependencies
178-
ament_export_dependencies(ament_index_cpp)
179-
ament_export_dependencies(class_loader)
180-
ament_export_dependencies(composition_interfaces)
181-
ament_export_dependencies(rclcpp)
175+
ament_export_dependencies(class_loader composition_interfaces rclcpp rcpputils rmw)
182176
ament_package(CONFIG_EXTRAS rclcpp_components-extras.cmake.in)

rclcpp_components/include/rclcpp_components/component_manager.hpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,13 @@
4343

4444
#include <map>
4545
#include <memory>
46+
#include <stdexcept>
4647
#include <string>
4748
#include <utility>
4849
#include <vector>
4950

51+
#include "class_loader/class_loader.hpp"
52+
5053
#include "composition_interfaces/srv/load_node.hpp"
5154
#include "composition_interfaces/srv/unload_node.hpp"
5255
#include "composition_interfaces/srv/list_nodes.hpp"
@@ -56,12 +59,10 @@
5659
#include "rclcpp/rclcpp.hpp"
5760

5861
#include "rclcpp_components/node_factory.hpp"
62+
#include "rclcpp_components/node_instance_wrapper.hpp"
5963
#include "rclcpp_components/visibility_control.hpp"
6064

61-
namespace class_loader
62-
{
63-
class ClassLoader;
64-
} // namespace class_loader
65+
#include "rmw/types.h"
6566

6667
namespace rclcpp_components
6768
{

rclcpp_components/include/rclcpp_components/component_manager_isolated.hpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,20 @@
1616
#ifndef RCLCPP_COMPONENTS__COMPONENT_MANAGER_ISOLATED_HPP__
1717
#define RCLCPP_COMPONENTS__COMPONENT_MANAGER_ISOLATED_HPP__
1818

19+
#include <atomic>
20+
#include <chrono>
1921
#include <map>
2022
#include <memory>
2123
#include <string>
24+
#include <thread>
25+
#include <unordered_map>
2226
#include <utility>
2327
#include <vector>
24-
#include <unordered_map>
2528
#include <system_error>
2629

30+
#include "rclcpp/executor.hpp"
31+
#include "rclcpp/executors/single_threaded_executor.hpp"
32+
#include "rclcpp/utilities.hpp"
2733
#include "rclcpp_components/component_manager.hpp"
2834
#include "rcpputils/thread_name.hpp"
2935

rclcpp_components/include/rclcpp_components/node_factory_template.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@
1818
#include <functional>
1919
#include <memory>
2020

21+
#include "rclcpp/node_options.hpp"
22+
2123
#include "rclcpp_components/node_factory.hpp"
24+
#include "rclcpp_components/node_instance_wrapper.hpp"
2225

2326
namespace rclcpp_components
2427
{

rclcpp_components/include/rclcpp_components/register_node_macro.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#define RCLCPP_COMPONENTS__REGISTER_NODE_MACRO_HPP__
1717

1818
#include "class_loader/class_loader.hpp"
19+
#include "rclcpp_components/node_factory.hpp"
1920
#include "rclcpp_components/node_factory_template.hpp"
2021

2122
/// Register a component that can be dynamically loaded at runtime.

rclcpp_components/package.xml

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,32 @@
1616

1717
<buildtool_depend>ament_cmake_ros</buildtool_depend>
1818

19+
<build_export_depend>class_loader</build_export_depend>
20+
<build_export_depend>composition_interfaces</build_export_depend>
21+
<build_export_depend>rclcpp</build_export_depend>
22+
<build_export_depend>rcpputils</build_export_depend>
23+
<build_export_depend>rmw</build_export_depend>
24+
1925
<build_depend>ament_index_cpp</build_depend>
2026
<build_depend>class_loader</build_depend>
2127
<build_depend>composition_interfaces</build_depend>
2228
<build_depend>rclcpp</build_depend>
29+
<build_depend>rcl_interfaces</build_depend>
2330
<build_depend>rcpputils</build_depend>
31+
<build_depend>rmw</build_depend>
2432

2533
<exec_depend>ament_index_cpp</exec_depend>
2634
<exec_depend>class_loader</exec_depend>
2735
<exec_depend>composition_interfaces</exec_depend>
2836
<exec_depend>rclcpp</exec_depend>
37+
<exec_depend>rcl_interfaces</exec_depend>
38+
<exec_depend>rcpputils</exec_depend>
39+
<exec_depend>rmw</exec_depend>
2940

3041
<test_depend>ament_cmake_google_benchmark</test_depend>
3142
<test_depend>ament_cmake_gtest</test_depend>
3243
<test_depend>ament_lint_auto</test_depend>
3344
<test_depend>ament_lint_common</test_depend>
34-
<test_depend>launch_testing</test_depend>
35-
<test_depend>std_msgs</test_depend>
3645

3746
<export>
3847
<build_type>ament_cmake</build_type>

rclcpp_components/src/component_container.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414

1515
#include <memory>
1616

17-
#include "rclcpp/rclcpp.hpp"
17+
#include "rclcpp/executors/single_threaded_executor.hpp"
18+
#include "rclcpp/utilities.hpp"
1819

1920
#include "rclcpp_components/component_manager.hpp"
2021

@@ -26,4 +27,6 @@ int main(int argc, char * argv[])
2627
auto node = std::make_shared<rclcpp_components::ComponentManager>(exec);
2728
exec->add_node(node);
2829
exec->spin();
30+
31+
return 0;
2932
}

rclcpp_components/src/component_container_event.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
#include <memory>
1616

17-
#include "rclcpp/rclcpp.hpp"
17+
#include "rclcpp/utilities.hpp"
1818
#include "rclcpp/experimental/executors/events_executor/events_executor.hpp"
1919

2020
#include "rclcpp_components/component_manager.hpp"
@@ -27,4 +27,6 @@ int main(int argc, char * argv[])
2727
auto node = std::make_shared<rclcpp_components::ComponentManager>(exec);
2828
exec->add_node(node);
2929
exec->spin();
30+
31+
return 0;
3032
}

rclcpp_components/src/component_container_isolated.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,10 @@
1616
#include <vector>
1717
#include <string>
1818

19-
#include "rclcpp/rclcpp.hpp"
19+
#include "rclcpp/executors/single_threaded_executor.hpp"
20+
#include "rclcpp/executors/multi_threaded_executor.hpp"
2021
#include "rclcpp/utilities.hpp"
22+
2123
#include "rclcpp_components/component_manager_isolated.hpp"
2224

2325
int main(int argc, char * argv[])
@@ -46,4 +48,6 @@ int main(int argc, char * argv[])
4648
}
4749
exec->add_node(node);
4850
exec->spin();
51+
52+
return 0;
4953
}

rclcpp_components/src/component_container_mt.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414

1515
#include <memory>
1616

17-
#include "rclcpp/rclcpp.hpp"
17+
#include "rclcpp/executors/multi_threaded_executor.hpp"
18+
#include "rclcpp/utilities.hpp"
1819

1920
#include "rclcpp_components/component_manager.hpp"
2021

@@ -35,4 +36,6 @@ int main(int argc, char * argv[])
3536
}
3637
exec->add_node(node);
3738
exec->spin();
39+
40+
return 0;
3841
}

0 commit comments

Comments
 (0)