Skip to content

Commit a001bfc

Browse files
authored
Make nav2_core an INTERFACE library. (#4578)
That is, it exports header files, but it does not have any implementation itself. Make sure to make an INTERFACE library so downstreams can have access to the header files. Note that this also required a change to nav2_graceful_controller, since it was erroneously getting a visualization_msgs dependency from nav2_core. Signed-off-by: Chris Lalancette <[email protected]>
1 parent 57415d6 commit a001bfc

File tree

4 files changed

+52
-32
lines changed

4 files changed

+52
-32
lines changed

nav2_core/CMakeLists.txt

Lines changed: 44 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,36 +2,47 @@ cmake_minimum_required(VERSION 3.5)
22
project(nav2_core)
33

44
find_package(ament_cmake REQUIRED)
5-
find_package(nav2_common REQUIRED)
6-
find_package(rclcpp REQUIRED)
7-
find_package(rclcpp_lifecycle REQUIRED)
8-
find_package(std_msgs REQUIRED)
95
find_package(geometry_msgs REQUIRED)
6+
find_package(nav2_behavior_tree REQUIRED)
7+
find_package(nav2_common REQUIRED)
108
find_package(nav2_costmap_2d REQUIRED)
11-
find_package(pluginlib REQUIRED)
12-
find_package(tf2_ros REQUIRED)
139
find_package(nav2_util REQUIRED)
1410
find_package(nav_msgs REQUIRED)
15-
find_package(nav2_behavior_tree REQUIRED)
11+
find_package(pluginlib REQUIRED)
12+
find_package(rclcpp REQUIRED)
13+
find_package(rclcpp_lifecycle REQUIRED)
14+
find_package(tf2_ros REQUIRED)
1615

1716
nav2_package()
1817

19-
set(dependencies
20-
rclcpp
21-
rclcpp_lifecycle
22-
std_msgs
23-
geometry_msgs
24-
nav2_costmap_2d
25-
pluginlib
26-
visualization_msgs
27-
nav_msgs
28-
tf2_ros
29-
nav2_util
30-
nav2_behavior_tree
18+
add_library(nav2_core INTERFACE)
19+
target_include_directories(nav2_core
20+
INTERFACE
21+
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
22+
"$<INSTALL_INTERFACE:include/${PROJECT_NAME}>"
23+
)
24+
target_link_libraries(nav2_core INTERFACE
25+
${geometry_msgs_TARGETS}
26+
nav2_behavior_tree::nav2_behavior_tree
27+
nav2_costmap_2d::nav2_costmap_2d_core
28+
nav2_costmap_2d::nav2_costmap_2d_client
29+
nav2_util::nav2_util_core
30+
${nav_msgs_TARGETS}
31+
pluginlib::pluginlib
32+
rclcpp::rclcpp
33+
rclcpp_lifecycle::rclcpp_lifecycle
34+
tf2_ros::tf2_ros
35+
)
36+
37+
install(TARGETS nav2_core
38+
EXPORT nav2_core
39+
ARCHIVE DESTINATION lib
40+
LIBRARY DESTINATION lib
41+
RUNTIME DESTINATION bin
3142
)
3243

3344
install(DIRECTORY include/
34-
DESTINATION include/
45+
DESTINATION include/${PROJECT_NAME}
3546
)
3647

3748
if(BUILD_TESTING)
@@ -41,7 +52,18 @@ if(BUILD_TESTING)
4152
ament_lint_auto_find_test_dependencies()
4253
endif()
4354

44-
ament_export_include_directories(include)
45-
ament_export_dependencies(${dependencies})
55+
ament_export_include_directories(include/${PROJECT_NAME})
56+
ament_export_dependencies(
57+
geometry_msgs
58+
nav2_behavior_tree
59+
nav2_costmap_2d
60+
nav2_util
61+
nav_msgs
62+
pluginlib
63+
rclcpp
64+
rclcpp_lifecycle
65+
tf2_ros
66+
)
67+
ament_export_targets(nav2_core)
4668

4769
ament_package()

nav2_core/package.xml

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,23 +11,18 @@
1111
<buildtool_depend>ament_cmake</buildtool_depend>
1212
<build_depend>nav2_common</build_depend>
1313

14-
<depend>rclcpp</depend>
15-
<depend>rclcpp_lifecycle</depend>
16-
<depend>std_msgs</depend>
1714
<depend>geometry_msgs</depend>
15+
<depend>nav2_behavior_tree</depend>
1816
<depend>nav2_costmap_2d</depend>
19-
<depend>pluginlib</depend>
17+
<depend>nav2_util</depend>
2018
<depend>nav_msgs</depend>
19+
<depend>pluginlib</depend>
20+
<depend>rclcpp</depend>
21+
<depend>rclcpp_lifecycle</depend>
2122
<depend>tf2_ros</depend>
22-
<depend>nav2_util</depend>
23-
<depend>nav2_behavior_tree</depend>
2423

2524
<test_depend>ament_lint_common</test_depend>
2625
<test_depend>ament_lint_auto</test_depend>
27-
<test_depend>ament_cmake_gtest</test_depend>
28-
<test_depend>ament_cmake_pytest</test_depend>
29-
<test_depend>launch</test_depend>
30-
<test_depend>launch_testing</test_depend>
3126

3227
<export>
3328
<build_type>ament_cmake</build_type>

nav2_graceful_controller/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ find_package(tf2 REQUIRED)
1414
find_package(tf2_geometry_msgs REQUIRED)
1515
find_package(nav_2d_utils REQUIRED)
1616
find_package(angles REQUIRED)
17+
find_package(visualization_msgs REQUIRED)
1718

1819
nav2_package()
1920

@@ -33,6 +34,7 @@ set(dependencies
3334
tf2_geometry_msgs
3435
nav_2d_utils
3536
angles
37+
visualization_msgs
3638
)
3739

3840
# Add Smooth Control Law as library

nav2_graceful_controller/package.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
<depend>tf2_geometry_msgs</depend>
2222
<depend>nav_2d_utils</depend>
2323
<depend>angles</depend>
24+
<depend>visualization_msgs</depend>
2425

2526
<test_depend>ament_lint_auto</test_depend>
2627
<test_depend>ament_lint_common</test_depend>

0 commit comments

Comments
 (0)