From e6475f317ee95bb6d592d3090ec484244feb0fea Mon Sep 17 00:00:00 2001 From: Chris Lalancette Date: Thu, 23 Nov 2023 05:18:12 -0500 Subject: [PATCH] Switch to target_link_libraries. (#1098) That way we can hide more libraries using PRIVATE. Signed-off-by: Chris Lalancette --- rviz2/test/tools/CMakeLists.txt | 6 ++- rviz_common/CMakeLists.txt | 48 +++++++++---------- .../rviz_common/yaml_config_reader.hpp | 5 +- rviz_common/package.xml | 1 - .../src/rviz_common/display_factory.hpp | 2 + rviz_rendering/CMakeLists.txt | 28 ++++++----- 6 files changed, 45 insertions(+), 45 deletions(-) diff --git a/rviz2/test/tools/CMakeLists.txt b/rviz2/test/tools/CMakeLists.txt index dd45420fb..b4da376e9 100644 --- a/rviz2/test/tools/CMakeLists.txt +++ b/rviz2/test/tools/CMakeLists.txt @@ -3,7 +3,11 @@ find_package(rclcpp REQUIRED) find_package(sensor_msgs REQUIRED) add_executable(send_lots_of_points_node send_lots_of_points_node.cpp) -ament_target_dependencies(send_lots_of_points_node rclcpp sensor_msgs geometry_msgs) +target_link_libraries(send_lots_of_points_node PRIVATE + ${geometry_msgs_TARGETS} + rclcpp::rclcpp + ${sensor_msgs_TARGETS} +) get_filename_component(script_path "${PROJECT_SOURCE_DIR}/scripts/rviz1_to_rviz2.py" ABSOLUTE) get_filename_component(config_path "${CMAKE_CURRENT_SOURCE_DIR}/configs" ABSOLUTE BASE_DIR) diff --git a/rviz_common/CMakeLists.txt b/rviz_common/CMakeLists.txt index cc5af98c5..d1b053cd3 100644 --- a/rviz_common/CMakeLists.txt +++ b/rviz_common/CMakeLists.txt @@ -42,13 +42,12 @@ find_package(sensor_msgs REQUIRED) find_package(std_msgs REQUIRED) find_package(tinyxml2_vendor REQUIRED) find_package(tf2 REQUIRED) -find_package(tf2_geometry_msgs REQUIRED) find_package(tf2_ros REQUIRED) find_package(message_filters REQUIRED) find_package(urdf REQUIRED) find_package(yaml_cpp_vendor REQUIRED) -find_package(TinyXML2 REQUIRED) # provided by tinyxml_vendor +find_package(TinyXML2 REQUIRED) # provided by tinyxml2_vendor # Copy env_config.hpp so that env_config.cpp can find it # TODO(jsquare): Get rid of copy hpp file @@ -233,45 +232,43 @@ target_include_directories(rviz_common $ ) -target_link_libraries(rviz_common - PUBLIC +target_link_libraries(rviz_common PUBLIC + ${geometry_msgs_TARGETS} + message_filters::message_filters + pluginlib::pluginlib + Qt5::Widgets + rclcpp::rclcpp rviz_ogre_vendor::OgreMain rviz_ogre_vendor::OgreOverlay - Qt5::Widgets + rviz_rendering::rviz_rendering + ${sensor_msgs_TARGETS} + ${std_msgs_TARGETS} + tf2::tf2 + tf2_ros::tf2_ros + yaml-cpp ) -ament_target_dependencies(rviz_common - PUBLIC - geometry_msgs - pluginlib - rclcpp - resource_retriever - rviz_rendering - sensor_msgs - std_msgs - tf2 - tf2_geometry_msgs - tf2_ros - message_filters - tinyxml2_vendor - urdf - yaml_cpp_vendor +target_link_libraries(rviz_common PRIVATE + resource_retriever::resource_retriever + tinyxml2::tinyxml2 ) + # Causes the visibility macros to use dllexport rather than dllimport, # which is appropriate when building the dll but not consuming it. target_compile_definitions(rviz_common PRIVATE "RVIZ_COMMON_BUILDING_LIBRARY") ament_export_dependencies( - rviz_rendering geometry_msgs + message_filters pluginlib + Qt5 rclcpp + rviz_ogre_vendor + rviz_rendering sensor_msgs std_msgs tf2 - tf2_geometry_msgs tf2_ros - urdf yaml_cpp_vendor ) @@ -442,8 +439,7 @@ if(BUILD_TESTING) test/mock_property_change_receiver.cpp ${SKIP_DISPLAY_TESTS}) if(TARGET rviz_common_display_test) - target_link_libraries(rviz_common_display_test rviz_common Qt5::Widgets) - ament_target_dependencies(rviz_common_display_test yaml_cpp_vendor) + target_link_libraries(rviz_common_display_test rviz_common Qt5::Widgets yaml-cpp) endif() endif() diff --git a/rviz_common/include/rviz_common/yaml_config_reader.hpp b/rviz_common/include/rviz_common/yaml_config_reader.hpp index 5b1dd4ae5..54672056f 100644 --- a/rviz_common/include/rviz_common/yaml_config_reader.hpp +++ b/rviz_common/include/rviz_common/yaml_config_reader.hpp @@ -36,10 +36,7 @@ #include "rviz_common/config.hpp" #include "rviz_common/visibility_control.hpp" -namespace YAML -{ -class Node; -} +#include "yaml-cpp/yaml.h" namespace rviz_common { diff --git a/rviz_common/package.xml b/rviz_common/package.xml index f80f56aba..d80491f56 100644 --- a/rviz_common/package.xml +++ b/rviz_common/package.xml @@ -46,7 +46,6 @@ sensor_msgs std_msgs tf2 - tf2_geometry_msgs tf2_ros message_filters tinyxml2_vendor diff --git a/rviz_common/src/rviz_common/display_factory.hpp b/rviz_common/src/rviz_common/display_factory.hpp index 30693000a..4abb4e840 100644 --- a/rviz_common/src/rviz_common/display_factory.hpp +++ b/rviz_common/src/rviz_common/display_factory.hpp @@ -31,6 +31,8 @@ #ifndef RVIZ_COMMON__DISPLAY_FACTORY_HPP_ #define RVIZ_COMMON__DISPLAY_FACTORY_HPP_ +#include + #include #include // NOLINT: cpplint cannot handle include order here diff --git a/rviz_rendering/CMakeLists.txt b/rviz_rendering/CMakeLists.txt index 6132873ba..ce0b8f9d0 100644 --- a/rviz_rendering/CMakeLists.txt +++ b/rviz_rendering/CMakeLists.txt @@ -98,12 +98,21 @@ add_library(rviz_rendering SHARED src/rviz_rendering/objects/wrench_visual.cpp ) -target_link_libraries(rviz_rendering - PUBLIC +target_link_libraries(rviz_rendering PUBLIC + Qt5::Widgets rviz_ogre_vendor::OgreMain rviz_ogre_vendor::OgreOverlay - Qt5::Widgets +) +if(TARGET Eigen3::Eigen) + # TODO(sloretz) require target to exist when https://github.com/ros2/choco-packages/issues/19 is addressed + target_link_libraries(rviz_rendering PUBLIC Eigen3::Eigen) +else() + target_include_directories(rviz_rendering PUBLIC ${Eigen3_INCLUDE_DIRS}) +endif() + +target_link_libraries(rviz_rendering PRIVATE ament_index_cpp::ament_index_cpp + assimp::assimp resource_retriever::resource_retriever ) @@ -111,23 +120,16 @@ target_include_directories(rviz_rendering PUBLIC $ $ - ${Eigen3_INCLUDE_DIRS} ) # Causes the visibility macros to use dllexport rather than dllimport, # which is appropriate when building the dll but not consuming it. target_compile_definitions(rviz_rendering PRIVATE "RVIZ_RENDERING_BUILDING_LIBRARY") -ament_target_dependencies(rviz_rendering - SYSTEM PUBLIC - rviz_assimp_vendor -) ament_export_dependencies( - rviz_assimp_vendor - rviz_ogre_vendor - eigen3_cmake_module Eigen3 - resource_retriever - ament_index_cpp) + Qt5 + rviz_ogre_vendor +) # Export old-style CMake variables ament_export_include_directories("include/${PROJECT_NAME}")