From ce2e6b66e94fbb73a7d5bff3a42e23fc4137f642 Mon Sep 17 00:00:00 2001 From: Chris Lalancette Date: Mon, 20 May 2024 12:53:39 +0000 Subject: [PATCH] Update nav2_behaviors to use modern CMake idioms. Signed-off-by: Chris Lalancette --- nav2_behaviors/CMakeLists.txt | 210 ++++++++++++++++++++--------- nav2_behaviors/package.xml | 39 ++---- nav2_behaviors/test/CMakeLists.txt | 5 +- 3 files changed, 159 insertions(+), 95 deletions(-) diff --git a/nav2_behaviors/CMakeLists.txt b/nav2_behaviors/CMakeLists.txt index df200309d9..d1085c038a 100644 --- a/nav2_behaviors/CMakeLists.txt +++ b/nav2_behaviors/CMakeLists.txt @@ -2,89 +2,140 @@ cmake_minimum_required(VERSION 3.5) project(nav2_behaviors) find_package(ament_cmake REQUIRED) +find_package(geometry_msgs REQUIRED) find_package(nav2_common REQUIRED) +find_package(nav2_core REQUIRED) +find_package(nav2_costmap_2d REQUIRED) +find_package(nav2_msgs REQUIRED) +find_package(nav2_util REQUIRED) +find_package(pluginlib REQUIRED) find_package(rclcpp REQUIRED) -find_package(rclcpp_action REQUIRED) -find_package(rclcpp_lifecycle REQUIRED) find_package(rclcpp_components REQUIRED) +find_package(rclcpp_lifecycle REQUIRED) find_package(std_msgs REQUIRED) -find_package(nav2_behavior_tree REQUIRED) -find_package(nav2_util REQUIRED) -find_package(nav2_msgs REQUIRED) -find_package(nav_msgs REQUIRED) find_package(tf2 REQUIRED) find_package(tf2_geometry_msgs REQUIRED) -find_package(geometry_msgs REQUIRED) -find_package(nav2_costmap_2d REQUIRED) -find_package(nav2_core REQUIRED) -find_package(pluginlib REQUIRED) +find_package(tf2_ros REQUIRED) nav2_package() -include_directories( - include -) - set(library_name behavior_server_core) set(executable_name behavior_server) -set(dependencies - rclcpp - rclcpp_action - rclcpp_lifecycle - rclcpp_components - std_msgs - nav2_util - nav2_behavior_tree - nav2_msgs - nav_msgs - tf2 - tf2_geometry_msgs - geometry_msgs - nav2_costmap_2d - nav2_core - pluginlib -) - # plugins add_library(nav2_spin_behavior SHARED plugins/spin.cpp ) - -ament_target_dependencies(nav2_spin_behavior - ${dependencies} +target_include_directories(nav2_spin_behavior + PUBLIC + "$" + "$" +) +target_link_libraries(nav2_spin_behavior PUBLIC + ${geometry_msgs_TARGETS} + nav2_core::nav2_core + nav2_costmap_2d::nav2_costmap_2d_client + nav2_costmap_2d::nav2_costmap_2d_core + ${nav2_msgs_TARGETS} + nav2_util::nav2_util_core + rclcpp::rclcpp + rclcpp_lifecycle::rclcpp_lifecycle + tf2::tf2 + tf2_ros::tf2_ros +) +target_link_libraries(nav2_spin_behavior PRIVATE + pluginlib::pluginlib + tf2_geometry_msgs::tf2_geometry_msgs ) add_library(nav2_wait_behavior SHARED -plugins/wait.cpp + plugins/wait.cpp ) - -ament_target_dependencies(nav2_wait_behavior -${dependencies} +target_include_directories(nav2_wait_behavior + PUBLIC + "$" + "$" +) +target_link_libraries(nav2_wait_behavior PUBLIC + ${geometry_msgs_TARGETS} + nav2_core::nav2_core + nav2_costmap_2d::nav2_costmap_2d_core + ${nav2_msgs_TARGETS} + nav2_util::nav2_util_core + rclcpp::rclcpp + rclcpp_lifecycle::rclcpp_lifecycle + tf2::tf2 + tf2_ros::tf2_ros ) add_library(nav2_drive_on_heading_behavior SHARED plugins/drive_on_heading.cpp ) - -ament_target_dependencies(nav2_drive_on_heading_behavior - ${dependencies} +target_include_directories(nav2_drive_on_heading_behavior + PUBLIC + "$" + "$" +) +target_link_libraries(nav2_drive_on_heading_behavior PUBLIC + ${geometry_msgs_TARGETS} + nav2_core::nav2_core + nav2_costmap_2d::nav2_costmap_2d_core + ${nav2_msgs_TARGETS} + nav2_util::nav2_util_core + rclcpp::rclcpp + rclcpp_lifecycle::rclcpp_lifecycle + tf2::tf2 + tf2_ros::tf2_ros +) +target_link_libraries(nav2_drive_on_heading_behavior PRIVATE + pluginlib::pluginlib ) add_library(nav2_back_up_behavior SHARED plugins/back_up.cpp ) - -ament_target_dependencies(nav2_back_up_behavior - ${dependencies} +target_include_directories(nav2_back_up_behavior + PUBLIC + "$" + "$" +) +target_link_libraries(nav2_back_up_behavior PUBLIC + ${geometry_msgs_TARGETS} + nav2_core::nav2_core + nav2_costmap_2d::nav2_costmap_2d_core + ${nav2_msgs_TARGETS} + nav2_util::nav2_util_core + rclcpp::rclcpp + rclcpp_lifecycle::rclcpp_lifecycle + tf2::tf2 + tf2_ros::tf2_ros +) +target_link_libraries(nav2_back_up_behavior PRIVATE + pluginlib::pluginlib ) add_library(nav2_assisted_teleop_behavior SHARED plugins/assisted_teleop.cpp ) - -ament_target_dependencies(nav2_assisted_teleop_behavior - ${dependencies} +target_include_directories(nav2_assisted_teleop_behavior + PUBLIC + "$" + "$" +) +target_link_libraries(nav2_assisted_teleop_behavior PUBLIC + ${geometry_msgs_TARGETS} + nav2_core::nav2_core + nav2_costmap_2d::nav2_costmap_2d_core + ${nav2_msgs_TARGETS} + nav2_util::nav2_util_core + rclcpp::rclcpp + rclcpp_lifecycle::rclcpp_lifecycle + ${std_msgs_TARGETS} + tf2::tf2 + tf2_ros::tf2_ros +) +target_link_libraries(nav2_assisted_teleop_behavior PRIVATE + pluginlib::pluginlib ) pluginlib_export_plugin_description_file(nav2_core behavior_plugin.xml) @@ -93,30 +144,41 @@ pluginlib_export_plugin_description_file(nav2_core behavior_plugin.xml) add_library(${library_name} SHARED src/behavior_server.cpp ) - -ament_target_dependencies(${library_name} - ${dependencies} +target_include_directories(${library_name} + PUBLIC + "$" + "$" +) +target_link_libraries(${library_name} PUBLIC + nav2_core::nav2_core + nav2_costmap_2d::nav2_costmap_2d_client + nav2_costmap_2d::nav2_costmap_2d_core + nav2_util::nav2_util_core + pluginlib::pluginlib + rclcpp_lifecycle::rclcpp_lifecycle + tf2_ros::tf2_ros +) +target_link_libraries(${library_name} PRIVATE + rclcpp_components::component ) # Executable add_executable(${executable_name} src/main.cpp ) - -target_link_libraries(${executable_name} ${library_name}) - -ament_target_dependencies(${executable_name} - ${dependencies} -) +target_link_libraries(${executable_name} PRIVATE rclcpp::rclcpp ${library_name}) rclcpp_components_register_nodes(${library_name} "behavior_server::BehaviorServer") -install(TARGETS ${library_name} - nav2_spin_behavior - nav2_wait_behavior - nav2_assisted_teleop_behavior - nav2_drive_on_heading_behavior - nav2_back_up_behavior +install( + TARGETS + ${library_name} + nav2_spin_behavior + nav2_wait_behavior + nav2_assisted_teleop_behavior + nav2_drive_on_heading_behavior + nav2_back_up_behavior + EXPORT ${library_name} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib RUNTIME DESTINATION bin @@ -127,7 +189,7 @@ install(TARGETS ${executable_name} ) install(DIRECTORY include/ - DESTINATION include/ + DESTINATION include/${PROJECT_NAME} ) install(FILES behavior_plugin.xml @@ -142,10 +204,13 @@ if(BUILD_TESTING) find_package(ament_lint_auto REQUIRED) ament_lint_auto_find_test_dependencies() find_package(ament_cmake_gtest REQUIRED) + find_package(rclcpp_action REQUIRED) + + ament_find_gtest() add_subdirectory(test) endif() -ament_export_include_directories(include) +ament_export_include_directories(include/${PROJECT_NAME}) ament_export_libraries(${library_name} nav2_spin_behavior nav2_wait_behavior @@ -153,5 +218,18 @@ ament_export_libraries(${library_name} nav2_drive_on_heading_behavior nav2_back_up_behavior ) -ament_export_dependencies(${dependencies}) +ament_export_dependencies( + geometry_msgs + nav2_core + nav2_costmap_2d + nav2_msgs + nav2_util + pluginlib + rclcpp + rclcpp_lifecycle + std_msgs + tf2 + tf2_ros +) +ament_export_targets(${library_name}) ament_package() diff --git a/nav2_behaviors/package.xml b/nav2_behaviors/package.xml index 7d33a91a05..2ef8566947 100644 --- a/nav2_behaviors/package.xml +++ b/nav2_behaviors/package.xml @@ -11,35 +11,24 @@ ament_cmake nav2_common - rclcpp - rclcpp_action - rclcpp_lifecycle - nav2_behavior_tree - nav2_util - nav2_msgs - nav_msgs - tf2 - tf2_geometry_msgs - geometry_msgs - nav2_costmap_2d - nav2_core - pluginlib - - rclcpp - rclcpp_action - rclcpp_lifecycle - nav2_behavior_tree - nav2_util - nav2_msgs - nav_msgs - geometry_msgs - nav2_costmap_2d - nav2_core - pluginlib + geometry_msgs + nav2_core + nav2_costmap_2d + nav2_msgs + nav2_util + pluginlib + rclcpp + rclcpp_components + rclcpp_lifecycle + std_msgs + tf2 + tf2_geometry_msgs + tf2_ros ament_lint_common ament_lint_auto ament_cmake_gtest + rclcpp_action ament_cmake diff --git a/nav2_behaviors/test/CMakeLists.txt b/nav2_behaviors/test/CMakeLists.txt index 9418db1571..6e170d7c80 100644 --- a/nav2_behaviors/test/CMakeLists.txt +++ b/nav2_behaviors/test/CMakeLists.txt @@ -1,7 +1,4 @@ ament_add_gtest(test_behaviors test_behaviors.cpp ) - -ament_target_dependencies(test_behaviors - ${dependencies} -) +target_link_libraries(test_behaviors rclcpp::rclcpp rclcpp_action::rclcpp_action ${nav2_msgs_TARGETS} ${library_name})