From 278ef85ad5fc340d7fb8bc8faa3f7009aa7777da Mon Sep 17 00:00:00 2001 From: Ryan Friedman Date: Sun, 11 Feb 2024 23:32:04 -0700 Subject: [PATCH] Use ament_export_targets * Link to exported namespace targets when possible Signed-off-by: Ryan Friedman (cherry picked from commit c0c7ef1e4da0bbe84a5ab4003e6429d0ecba66bf) --- grid_map_costmap_2d/CMakeLists.txt | 48 ++++++++++++++++++------- grid_map_costmap_2d/test/CMakeLists.txt | 10 +++--- 2 files changed, 41 insertions(+), 17 deletions(-) diff --git a/grid_map_costmap_2d/CMakeLists.txt b/grid_map_costmap_2d/CMakeLists.txt index 544ded124..0a0716e1b 100644 --- a/grid_map_costmap_2d/CMakeLists.txt +++ b/grid_map_costmap_2d/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.5) +cmake_minimum_required(VERSION 3.13) project(grid_map_costmap_2d) ## Find ament_cmake macros and libraries @@ -7,6 +7,7 @@ find_package(grid_map_cmake_helpers REQUIRED) find_package(grid_map_core REQUIRED) find_package(geometry_msgs REQUIRED) find_package(nav2_costmap_2d REQUIRED) + find_package(tf2_ros REQUIRED) find_package(tf2_geometry_msgs REQUIRED) @@ -14,16 +15,6 @@ find_package(Eigen3 REQUIRED) grid_map_package() -## Specify additional locations of header files -include_directories( - include - SYSTEM - ${EIGEN3_INCLUDE_DIR} - ${grid_map_core_INCLUDE_DIRS} - ${nav2_costmap_2d_INCLUDE_DIRS} - ${geometry_msgs_INCLUDE_DIRS} -) - set(dependencies grid_map_core geometry_msgs @@ -32,13 +23,44 @@ set(dependencies tf2_geometry_msgs ) +add_library(${PROJECT_NAME} + include/grid_map_costmap_2d/costmap_2d_converter.hpp + include/grid_map_costmap_2d/grid_map_costmap_2d.hpp +) + +add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME}) + +target_link_libraries(${PROJECT_NAME} + PUBLIC + grid_map_core::grid_map_core + ${geometry_msgs_TARGETS} + ${tf2_geometry_msgs_TARGETS} + nav2_costmap_2d::nav2_costmap_2d_core + tf2_ros::tf2_ros +) + +target_include_directories(${PROJECT_NAME} + PUBLIC + "$" + "$" +) + ############# ## Install ## ############# +# Mark library for installation +install( + TARGETS ${PROJECT_NAME} + EXPORT export_${PROJECT_NAME} + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib + RUNTIME DESTINATION lib/${PROJECT_NAME} +) + # Mark cpp header files for installation install( - DIRECTORY include/${PROJECT_NAME}/ + DIRECTORY include/ DESTINATION include/${PROJECT_NAME} FILES_MATCHING PATTERN "*.hpp" ) @@ -77,6 +99,6 @@ if(BUILD_TESTING) add_subdirectory(test) endif() -ament_export_include_directories(include) +ament_export_targets(export_${PROJECT_NAME} HAS_LIBRARY_TARGET) ament_export_dependencies(${dependencies}) ament_package() diff --git a/grid_map_costmap_2d/test/CMakeLists.txt b/grid_map_costmap_2d/test/CMakeLists.txt index 31d13e3bf..9ca4e5003 100644 --- a/grid_map_costmap_2d/test/CMakeLists.txt +++ b/grid_map_costmap_2d/test/CMakeLists.txt @@ -3,14 +3,16 @@ ament_add_gtest(${PROJECT_NAME}-test test_costmap_2d_converter.cpp ) -ament_target_dependencies(${PROJECT_NAME}-test - ${dependencies} +target_link_libraries(${PROJECT_NAME}-test + ${PROJECT_NAME}::${PROJECT_NAME} ) ament_add_gtest(costmap-2d-ros-test test_costmap_2d_ros.cpp ) -ament_target_dependencies(costmap-2d-ros-test - ${dependencies} +target_link_libraries(costmap-2d-ros-test + ${PROJECT_NAME}::${PROJECT_NAME} ) + +