From 6c5c09f672ba2576f62f92b6690f2fc503864bb3 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 * And use INTERFACE targets Signed-off-by: Ryan Friedman (cherry picked from commit c0c7ef1e4da0bbe84a5ab4003e6429d0ecba66bf) --- grid_map_costmap_2d/CMakeLists.txt | 47 ++++++++++++++++++------- grid_map_costmap_2d/test/CMakeLists.txt | 9 ++--- 2 files changed, 39 insertions(+), 17 deletions(-) diff --git a/grid_map_costmap_2d/CMakeLists.txt b/grid_map_costmap_2d/CMakeLists.txt index 544ded124..201c87601 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 @@ -14,16 +14,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 +22,44 @@ set(dependencies tf2_geometry_msgs ) +add_library(${PROJECT_NAME} INTERFACE + 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} + INTERFACE + 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} + INTERFACE + "$" + "$" +) + ############# ## 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 +98,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..999537413 100644 --- a/grid_map_costmap_2d/test/CMakeLists.txt +++ b/grid_map_costmap_2d/test/CMakeLists.txt @@ -3,14 +3,15 @@ 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} ) +