From 1c9ffcf7f24bd69b437f9f40581350c5f48e58c4 Mon Sep 17 00:00:00 2001 From: Tyler Weaver Date: Fri, 10 Feb 2023 09:03:37 -0700 Subject: [PATCH 01/10] Fix CMake install so overriding works (#926) Signed-off-by: Tyler Weaver (cherry picked from commit 727297efa800d7c1dfdc59352c0f7645c779ea36) # Conflicts: # controller_interface/CMakeLists.txt # controller_interface/package.xml # controller_manager/CMakeLists.txt # controller_manager/package.xml # hardware_interface/CMakeLists.txt # joint_limits/CMakeLists.txt # ros2_control_test_assets/CMakeLists.txt # transmission_interface/CMakeLists.txt --- controller_interface/CMakeLists.txt | 94 ++++++++-- controller_interface/package.xml | 4 + controller_manager/CMakeLists.txt | 232 ++++++++++++++---------- controller_manager/package.xml | 4 + controller_manager_msgs/CMakeLists.txt | 6 +- hardware_interface/CMakeLists.txt | 165 ++++++++--------- joint_limits/CMakeLists.txt | 51 ++++-- ros2_control/CMakeLists.txt | 2 +- ros2_control_test_assets/CMakeLists.txt | 25 ++- transmission_interface/CMakeLists.txt | 77 ++++++-- 10 files changed, 423 insertions(+), 237 deletions(-) diff --git a/controller_interface/CMakeLists.txt b/controller_interface/CMakeLists.txt index 0a380d5a13..c0f0412b68 100644 --- a/controller_interface/CMakeLists.txt +++ b/controller_interface/CMakeLists.txt @@ -1,44 +1,94 @@ -cmake_minimum_required(VERSION 3.5) -project(controller_interface) +cmake_minimum_required(VERSION 3.16) +project(controller_interface LANGUAGES CXX) +<<<<<<< HEAD if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") add_compile_options(-Wall -Wextra -Werror=conversion -Werror=unused-but-set-variable -Werror=return-type -Werror=shadow) +======= +if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)") + add_compile_options(-Wall -Wextra) +>>>>>>> 727297e (Fix CMake install so overriding works (#926)) endif() +set(THIS_PACKAGE_INCLUDE_DEPENDS + hardware_interface + rclcpp_lifecycle +) + find_package(ament_cmake REQUIRED) -find_package(hardware_interface REQUIRED) -find_package(rclcpp_lifecycle REQUIRED) +foreach(Dependency IN ITEMS ${THIS_PACKAGE_INCLUDE_DEPENDS}) + find_package(${Dependency} REQUIRED) +endforeach() -add_library( - ${PROJECT_NAME} - SHARED +add_library(controller_interface SHARED src/controller_interface_base.cpp src/controller_interface.cpp src/chainable_controller_interface.cpp ) -target_include_directories( - ${PROJECT_NAME} - PRIVATE - include -) -ament_target_dependencies( - ${PROJECT_NAME} - hardware_interface - rclcpp_lifecycle +target_compile_features(controller_interface PUBLIC cxx_std_17) +target_include_directories(controller_interface PUBLIC + $ + $ ) +ament_target_dependencies(controller_interface PUBLIC ${THIS_PACKAGE_INCLUDE_DEPENDS}) # Causes the visibility macros to use dllexport rather than dllimport, # which is appropriate when building the dll but not consuming it. -target_compile_definitions(${PROJECT_NAME} PRIVATE "CONTROLLER_INTERFACE_BUILDING_DLL") +target_compile_definitions(controller_interface PRIVATE "CONTROLLER_INTERFACE_BUILDING_DLL") + +if(BUILD_TESTING) + find_package(ament_cmake_gmock REQUIRED) + find_package(sensor_msgs REQUIRED) + + ament_add_gmock(test_controller_interface test/test_controller_interface.cpp) + target_link_libraries(test_controller_interface + controller_interface + ) + + ament_add_gmock(test_controller_with_options test/test_controller_with_options.cpp) + target_link_libraries(test_controller_with_options + controller_interface + ) + + ament_add_gmock(test_chainable_controller_interface test/test_chainable_controller_interface.cpp) + target_link_libraries(test_chainable_controller_interface + controller_interface + hardware_interface::hardware_interface + ) + + ament_add_gmock(test_semantic_component_interface test/test_semantic_component_interface.cpp) + target_link_libraries(test_semantic_component_interface + controller_interface + hardware_interface::hardware_interface + ) + + ament_add_gmock(test_force_torque_sensor test/test_force_torque_sensor.cpp) + target_link_libraries(test_force_torque_sensor + controller_interface + hardware_interface::hardware_interface + ) + + ament_add_gmock(test_imu_sensor test/test_imu_sensor.cpp) + target_link_libraries(test_imu_sensor + controller_interface + hardware_interface::hardware_interface + ) + ament_target_dependencies(test_imu_sensor + sensor_msgs + ) +endif() -install(DIRECTORY include/ - DESTINATION include +install( + DIRECTORY include/ + DESTINATION include/controller_interface ) -install(TARGETS ${PROJECT_NAME} +install(TARGETS controller_interface + EXPORT export_controller_interface ARCHIVE DESTINATION lib LIBRARY DESTINATION lib RUNTIME DESTINATION bin ) +<<<<<<< HEAD if(BUILD_TESTING) find_package(ament_cmake_gmock REQUIRED) @@ -109,5 +159,9 @@ ament_export_include_directories( ament_export_libraries( ${PROJECT_NAME} ) +======= +ament_export_targets(export_controller_interface HAS_LIBRARY_TARGET) +ament_export_dependencies(${THIS_PACKAGE_INCLUDE_DEPENDS}) +>>>>>>> 727297e (Fix CMake install so overriding works (#926)) ament_package() ament_generate_version_header(${PROJECT_NAME}) diff --git a/controller_interface/package.xml b/controller_interface/package.xml index b23070bf72..c9d3ad6096 100644 --- a/controller_interface/package.xml +++ b/controller_interface/package.xml @@ -15,6 +15,7 @@ rclcpp_lifecycle sensor_msgs +<<<<<<< HEAD hardware_interface rclcpp_lifecycle sensor_msgs @@ -24,6 +25,9 @@ ament_cmake_gmock geometry_msgs +======= + ament_cmake_gmock +>>>>>>> 727297e (Fix CMake install so overriding works (#926)) sensor_msgs diff --git a/controller_manager/CMakeLists.txt b/controller_manager/CMakeLists.txt index 689e7c7244..2146454735 100644 --- a/controller_manager/CMakeLists.txt +++ b/controller_manager/CMakeLists.txt @@ -1,6 +1,7 @@ -cmake_minimum_required(VERSION 3.5) -project(controller_manager) +cmake_minimum_required(VERSION 3.16) +project(controller_manager LANGUAGES CXX) +<<<<<<< HEAD if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") add_compile_options(-Wall -Wextra -Werror=conversion -Werror=unused-but-set-variable -Werror=return-type -Werror=shadow) endif() @@ -14,6 +15,21 @@ set(THIS_PACKAGE_INCLUDE_DEPENDS rclcpp realtime_tools std_msgs +======= +if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)") + add_compile_options(-Wall -Wextra) +endif() + +set(THIS_PACKAGE_INCLUDE_DEPENDS + ament_index_cpp + controller_interface + controller_manager_msgs + diagnostic_updater + hardware_interface + pluginlib + rclcpp + realtime_tools +>>>>>>> 727297e (Fix CMake install so overriding works (#926)) ) find_package(ament_cmake REQUIRED) @@ -24,115 +40,129 @@ foreach(Dependency IN ITEMS ${THIS_PACKAGE_INCLUDE_DEPENDS}) find_package(${Dependency} REQUIRED) endforeach() -add_library(${PROJECT_NAME} SHARED +add_library(controller_manager SHARED src/controller_manager.cpp ) -target_include_directories(${PROJECT_NAME} PRIVATE include) -ament_target_dependencies(${PROJECT_NAME} ${THIS_PACKAGE_INCLUDE_DEPENDS}) +target_compile_features(controller_manager PUBLIC cxx_std_17) +target_include_directories(controller_manager PUBLIC + $ + $ +) +ament_target_dependencies(controller_manager PUBLIC ${THIS_PACKAGE_INCLUDE_DEPENDS}) + # Causes the visibility macros to use dllexport rather than dllimport, # which is appropriate when building the dll but not consuming it. -target_compile_definitions(${PROJECT_NAME} PRIVATE "CONTROLLER_MANAGER_BUILDING_DLL") +target_compile_definitions(controller_manager PRIVATE "CONTROLLER_MANAGER_BUILDING_DLL") add_executable(ros2_control_node src/ros2_control_node.cpp) -target_include_directories(ros2_control_node PRIVATE include) -target_link_libraries(ros2_control_node - ${PROJECT_NAME} -) -ament_target_dependencies(ros2_control_node ${THIS_PACKAGE_INCLUDE_DEPENDS}) - -install(TARGETS ${PROJECT_NAME} - RUNTIME DESTINATION bin - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib -) - -install(TARGETS ros2_control_node - RUNTIME DESTINATION lib/${PROJECT_NAME} -) - -install(DIRECTORY include/ - DESTINATION include +target_link_libraries(ros2_control_node PRIVATE + controller_manager ) if(BUILD_TESTING) find_package(ament_cmake_gmock REQUIRED) find_package(ros2_control_test_assets REQUIRED) + # Plugin Libraries that are built and installed for use in testing add_library(test_controller SHARED test/test_controller/test_controller.cpp) - target_include_directories(test_controller PRIVATE include) - target_link_libraries(test_controller ${PROJECT_NAME}) + target_link_libraries(test_controller PUBLIC controller_manager) target_compile_definitions(test_controller PRIVATE "CONTROLLER_MANAGER_BUILDING_DLL") - pluginlib_export_plugin_description_file( - controller_interface test/test_controller/test_controller.xml) - install(TARGETS test_controller + pluginlib_export_plugin_description_file(controller_interface test/test_controller/test_controller.xml) + install( + TARGETS test_controller DESTINATION lib ) - add_library(test_controller_failed_init SHARED test/test_controller_failed_init/test_controller_failed_init.cpp) - target_include_directories(test_controller_failed_init PRIVATE include) - target_link_libraries(test_controller_failed_init ${PROJECT_NAME}) + add_library(test_controller_failed_init SHARED + test/test_controller_failed_init/test_controller_failed_init.cpp + ) + target_link_libraries(test_controller_failed_init PUBLIC controller_manager) target_compile_definitions(test_controller_failed_init PRIVATE "CONTROLLER_MANAGER_BUILDING_DLL") pluginlib_export_plugin_description_file( controller_interface test/test_controller_failed_init/test_controller_failed_init.xml) - install(TARGETS test_controller_failed_init + install( + TARGETS test_controller_failed_init DESTINATION lib ) - add_library(test_chainable_controller SHARED test/test_chainable_controller/test_chainable_controller.cpp) - ament_target_dependencies(test_chainable_controller realtime_tools) - target_include_directories(test_chainable_controller PRIVATE include) - target_link_libraries(test_chainable_controller controller_manager) + add_library(test_chainable_controller SHARED + test/test_chainable_controller/test_chainable_controller.cpp + ) + ament_target_dependencies(test_chainable_controller PUBLIC realtime_tools) + target_link_libraries(test_chainable_controller PUBLIC controller_manager) target_compile_definitions(test_chainable_controller PRIVATE "CONTROLLER_MANAGER_BUILDING_DLL") pluginlib_export_plugin_description_file( controller_interface test/test_chainable_controller/test_chainable_controller.xml) - install(TARGETS test_chainable_controller + install( + TARGETS test_chainable_controller DESTINATION lib ) - ament_add_gmock( - test_controller_manager + ament_add_gmock(test_controller_manager test/test_controller_manager.cpp ) - target_include_directories(test_controller_manager PRIVATE include) - target_link_libraries(test_controller_manager ${PROJECT_NAME} test_controller) - ament_target_dependencies(test_controller_manager ros2_control_test_assets) + target_link_libraries(test_controller_manager + controller_manager + test_controller + ros2_control_test_assets::ros2_control_test_assets + ) - ament_add_gmock( - test_controller_manager_with_namespace.cpp + ament_add_gmock(test_controller_manager_with_namespace test/test_controller_manager_with_namespace.cpp ) - target_include_directories(test_controller_manager_with_namespace.cpp PRIVATE include) - target_link_libraries(test_controller_manager_with_namespace.cpp ${PROJECT_NAME} test_controller) - ament_target_dependencies(test_controller_manager_with_namespace.cpp ros2_control_test_assets) + target_link_libraries(test_controller_manager_with_namespace + controller_manager + test_controller + ros2_control_test_assets::ros2_control_test_assets + ) +<<<<<<< HEAD ament_add_gmock( test_load_controller +======= + ament_add_gmock(test_controller_manager_hardware_error_handling + test/test_controller_manager_hardware_error_handling.cpp + ) + target_link_libraries(test_controller_manager_hardware_error_handling + controller_manager + test_controller + ros2_control_test_assets::ros2_control_test_assets + ) + + ament_add_gmock(test_load_controller +>>>>>>> 727297e (Fix CMake install so overriding works (#926)) test/test_load_controller.cpp APPEND_ENV AMENT_PREFIX_PATH=${ament_index_build_path}_$ ) - target_include_directories(test_load_controller PRIVATE include) - target_link_libraries(test_load_controller ${PROJECT_NAME} test_controller test_controller_failed_init) - ament_target_dependencies(test_load_controller ros2_control_test_assets) + target_link_libraries(test_load_controller + controller_manager + test_controller + test_controller_failed_init + ros2_control_test_assets::ros2_control_test_assets + ) - ament_add_gmock( - test_controllers_chaining_with_controller_manager + ament_add_gmock(test_controllers_chaining_with_controller_manager test/test_controllers_chaining_with_controller_manager.cpp ) - target_include_directories(test_controllers_chaining_with_controller_manager PRIVATE include) - target_link_libraries(test_controllers_chaining_with_controller_manager controller_manager test_chainable_controller test_controller) - ament_target_dependencies(test_controllers_chaining_with_controller_manager ros2_control_test_assets) + target_link_libraries(test_controllers_chaining_with_controller_manager + controller_manager + test_chainable_controller + test_controller + ros2_control_test_assets::ros2_control_test_assets + ) - ament_add_gmock( - test_controller_manager_srvs + ament_add_gmock(test_controller_manager_srvs test/test_controller_manager_srvs.cpp APPEND_ENV AMENT_PREFIX_PATH=${ament_index_build_path}_$ ) - target_include_directories(test_controller_manager_srvs PRIVATE include) - target_link_libraries(test_controller_manager_srvs ${PROJECT_NAME} test_controller test_chainable_controller) - ament_target_dependencies( - test_controller_manager_srvs + target_link_libraries(test_controller_manager_srvs + controller_manager + test_controller + test_chainable_controller + ros2_control_test_assets::ros2_control_test_assets + ) + ament_target_dependencies(test_controller_manager_srvs controller_manager_msgs - ros2_control_test_assets ) set_tests_properties(test_controller_manager_srvs PROPERTIES TIMEOUT 120) ament_add_gmock(test_controller_manager_urdf_passing @@ -147,34 +177,41 @@ if(BUILD_TESTING) ros2_control_test_assets ) - add_library(test_controller_with_interfaces SHARED test/test_controller_with_interfaces/test_controller_with_interfaces.cpp) - target_include_directories(test_controller_with_interfaces PRIVATE include) - target_link_libraries(test_controller_with_interfaces ${PROJECT_NAME}) + add_library(test_controller_with_interfaces SHARED + test/test_controller_with_interfaces/test_controller_with_interfaces.cpp + ) + target_link_libraries(test_controller_with_interfaces PUBLIC + controller_manager + ) target_compile_definitions(test_controller_with_interfaces PRIVATE "CONTROLLER_MANAGER_BUILDING_DLL") pluginlib_export_plugin_description_file( controller_interface test/test_controller_with_interfaces/test_controller_with_interfaces.xml) - install(TARGETS test_controller_with_interfaces + install( + TARGETS test_controller_with_interfaces DESTINATION lib ) - ament_add_gmock( - test_release_interfaces + ament_add_gmock(test_release_interfaces test/test_release_interfaces.cpp APPEND_ENV AMENT_PREFIX_PATH=${ament_index_build_path}_$ ) - target_include_directories(test_release_interfaces PRIVATE include) - target_link_libraries(test_release_interfaces ${PROJECT_NAME} test_controller_with_interfaces) - ament_target_dependencies(test_release_interfaces ros2_control_test_assets) + target_link_libraries(test_release_interfaces + controller_manager + test_controller_with_interfaces + ros2_control_test_assets::ros2_control_test_assets + ) - ament_add_gmock( - test_spawner_unspawner + ament_add_gmock(test_spawner_unspawner test/test_spawner_unspawner.cpp TIMEOUT 120 ) - target_include_directories(test_spawner_unspawner PRIVATE include) - target_link_libraries(test_spawner_unspawner ${PROJECT_NAME} test_controller) - ament_target_dependencies(test_spawner_unspawner ros2_control_test_assets) + target_link_libraries(test_spawner_unspawner + controller_manager + test_controller + ros2_control_test_assets::ros2_control_test_assets + ) +<<<<<<< HEAD ament_add_gmock(test_hardware_spawner test/test_hardware_spawner.cpp TIMEOUT 120 @@ -193,14 +230,18 @@ if(BUILD_TESTING) ament_add_gmock( test_hardware_management_srvs +======= + ament_add_gmock(test_hardware_management_srvs +>>>>>>> 727297e (Fix CMake install so overriding works (#926)) test/test_hardware_management_srvs.cpp ) - target_include_directories(test_hardware_management_srvs PRIVATE include) - target_link_libraries(test_hardware_management_srvs ${PROJECT_NAME} test_controller) - ament_target_dependencies( - test_hardware_management_srvs + target_link_libraries(test_hardware_management_srvs + controller_manager + test_controller + ros2_control_test_assets::ros2_control_test_assets + ) + ament_target_dependencies(test_hardware_management_srvs controller_manager_msgs - ros2_control_test_assets ) find_package(ament_cmake_pytest REQUIRED) @@ -209,17 +250,26 @@ if(BUILD_TESTING) ament_add_pytest_test(test_ros2_control_node test/test_ros2_control_node_launch.py) endif() -# Install Python modules -ament_python_install_package(${PROJECT_NAME} SCRIPTS_DESTINATION lib/${PROJECT_NAME}) - -ament_export_libraries( - ${PROJECT_NAME} +install( + DIRECTORY include/ + DESTINATION include/controller_manager +) +install( + TARGETS controller_manager + EXPORT export_controller_manager + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib ) -ament_export_include_directories( - include +install( + TARGETS ros2_control_node + RUNTIME DESTINATION lib/controller_manager ) -ament_export_dependencies( - ${THIS_PACKAGE_INCLUDE_DEPENDS} + +ament_python_install_package(controller_manager + SCRIPTS_DESTINATION lib/controller_manager ) +ament_export_targets(export_controller_manager HAS_LIBRARY_TARGET) +ament_export_dependencies(${THIS_PACKAGE_INCLUDE_DEPENDS}) ament_package() ament_generate_version_header(${PROJECT_NAME}) diff --git a/controller_manager/package.xml b/controller_manager/package.xml index b3e62ea3b3..89cf0d374e 100644 --- a/controller_manager/package.xml +++ b/controller_manager/package.xml @@ -29,6 +29,7 @@ std_msgs ament_cmake_gmock +<<<<<<< HEAD ament_cmake_pytest hardware_interface_testing launch_testing_ros @@ -39,6 +40,9 @@ robot_state_publisher ros2_control_test_assets sensor_msgs +======= + ros2_control_test_assets +>>>>>>> 727297e (Fix CMake install so overriding works (#926)) ament_cmake diff --git a/controller_manager_msgs/CMakeLists.txt b/controller_manager_msgs/CMakeLists.txt index 2ba8f23194..2a863c29dd 100644 --- a/controller_manager_msgs/CMakeLists.txt +++ b/controller_manager_msgs/CMakeLists.txt @@ -1,10 +1,6 @@ -cmake_minimum_required(VERSION 3.5) +cmake_minimum_required(VERSION 3.16) project(controller_manager_msgs) -if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") - add_compile_options(-Wall -Wextra -Wpedantic) -endif() - find_package(ament_cmake REQUIRED) find_package(builtin_interfaces REQUIRED) find_package(lifecycle_msgs REQUIRED) diff --git a/hardware_interface/CMakeLists.txt b/hardware_interface/CMakeLists.txt index 54474889f8..79eda8fae5 100644 --- a/hardware_interface/CMakeLists.txt +++ b/hardware_interface/CMakeLists.txt @@ -1,19 +1,24 @@ -cmake_minimum_required(VERSION 3.5) -project(hardware_interface) +cmake_minimum_required(VERSION 3.16) +project(hardware_interface LANGUAGES CXX) +<<<<<<< HEAD if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") add_compile_options(-Wall -Wextra -Werror=conversion -Werror=unused-but-set-variable -Werror=return-type -Werror=shadow) +======= +if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)") + add_compile_options(-Wall -Wextra) +>>>>>>> 727297e (Fix CMake install so overriding works (#926)) endif() set(THIS_PACKAGE_INCLUDE_DEPENDS - control_msgs - lifecycle_msgs - pluginlib - rclcpp_lifecycle - rcpputils - rcutils - tinyxml2_vendor - TinyXML2 + control_msgs + lifecycle_msgs + pluginlib + rclcpp_lifecycle + rcpputils + rcutils + TinyXML2 + tinyxml2_vendor ) find_package(ament_cmake REQUIRED) @@ -21,9 +26,7 @@ foreach(Dependency IN ITEMS ${THIS_PACKAGE_INCLUDE_DEPENDS}) find_package(${Dependency} REQUIRED) endforeach() -add_library( - ${PROJECT_NAME} - SHARED +add_library(hardware_interface SHARED src/actuator.cpp src/component_parser.cpp src/resource_manager.cpp @@ -31,88 +34,48 @@ add_library( src/system.cpp src/lexical_casts.cpp ) -target_include_directories( - ${PROJECT_NAME} - PUBLIC - include +target_compile_features(hardware_interface PUBLIC cxx_std_17) +target_include_directories(hardware_interface PUBLIC + $ + $ ) -ament_target_dependencies(${PROJECT_NAME} ${THIS_PACKAGE_INCLUDE_DEPENDS}) +ament_target_dependencies(hardware_interface PUBLIC ${THIS_PACKAGE_INCLUDE_DEPENDS}) # Causes the visibility macros to use dllexport rather than dllimport, # which is appropriate when building the dll but not consuming it. -target_compile_definitions(${PROJECT_NAME} PRIVATE "HARDWARE_INTERFACE_BUILDING_DLL") +target_compile_definitions(hardware_interface PRIVATE "HARDWARE_INTERFACE_BUILDING_DLL") -# Mock components -add_library( - mock_components - SHARED +add_library(mock_components SHARED src/mock_components/generic_system.cpp ) -target_include_directories( - mock_components - PUBLIC - include -) -target_link_libraries( - mock_components - ${PROJECT_NAME} -) -ament_target_dependencies( - mock_components - pluginlib - rcpputils +target_compile_features(mock_components PUBLIC cxx_std_17) +target_include_directories(mock_components PUBLIC + $ + $ ) - +ament_target_dependencies(mock_components PUBLIC ${THIS_PACKAGE_INCLUDE_DEPENDS}) # Causes the visibility macros to use dllexport rather than dllimport, # which is appropriate when building the dll but not consuming it. target_compile_definitions(mock_components PRIVATE "HARDWARE_INTERFACE_BUILDING_DLL") pluginlib_export_plugin_description_file( - ${PROJECT_NAME} mock_components_plugin_description.xml) + hardware_interface mock_components_plugin_description.xml) -# Fake components -add_library( - fake_components - SHARED +add_library(fake_components SHARED src/mock_components/generic_system.cpp src/mock_components/fake_generic_system.cpp ) -target_include_directories( - fake_components - PUBLIC - include -) -target_link_libraries( - fake_components - ${PROJECT_NAME} -) -ament_target_dependencies( - fake_components - pluginlib - rcpputils +target_compile_features(fake_components PUBLIC cxx_std_17) +target_include_directories(fake_components PUBLIC + $ + $ ) - +ament_target_dependencies(fake_components PUBLIC ${THIS_PACKAGE_INCLUDE_DEPENDS}) # Causes the visibility macros to use dllexport rather than dllimport, # which is appropriate when building the dll but not consuming it. target_compile_definitions(fake_components PRIVATE "HARDWARE_INTERFACE_BUILDING_DLL") pluginlib_export_plugin_description_file( - ${PROJECT_NAME} fake_components_plugin_description.xml) - - -install( - DIRECTORY include/ - DESTINATION include -) - -install( - TARGETS - fake_components - mock_components - ${PROJECT_NAME} - RUNTIME DESTINATION bin - ARCHIVE DESTINATION lib - LIBRARY DESTINATION lib -) + hardware_interface fake_components_plugin_description.xml) if(BUILD_TESTING) @@ -128,48 +91,80 @@ if(BUILD_TESTING) ament_target_dependencies(test_inst_hardwares rcpputils) ament_add_gmock(test_joint_handle test/test_handle.cpp) - target_link_libraries(test_joint_handle ${PROJECT_NAME}) + target_link_libraries(test_joint_handle hardware_interface) ament_target_dependencies(test_joint_handle rcpputils) ament_add_gmock(test_component_interfaces test/test_component_interfaces.cpp) - target_link_libraries(test_component_interfaces ${PROJECT_NAME}) + target_link_libraries(test_component_interfaces hardware_interface) ament_add_gmock(test_component_parser test/test_component_parser.cpp) - target_link_libraries(test_component_parser ${PROJECT_NAME}) + target_link_libraries(test_component_parser hardware_interface) ament_target_dependencies(test_component_parser ros2_control_test_assets) +<<<<<<< HEAD +======= + add_library(test_components SHARED + test/test_components/test_actuator.cpp + test/test_components/test_sensor.cpp + test/test_components/test_system.cpp) + target_link_libraries(test_components hardware_interface) + ament_target_dependencies(test_components + pluginlib) + install(TARGETS test_components + DESTINATION lib + ) + pluginlib_export_plugin_description_file( + hardware_interface test/test_components/test_components.xml) + +>>>>>>> 727297e (Fix CMake install so overriding works (#926)) add_library(test_hardware_components SHARED test/test_hardware_components/test_single_joint_actuator.cpp test/test_hardware_components/test_force_torque_sensor.cpp test/test_hardware_components/test_two_joint_system.cpp test/test_hardware_components/test_system_with_command_modes.cpp ) - target_link_libraries(test_hardware_components ${PROJECT_NAME}) + target_link_libraries(test_hardware_components hardware_interface) ament_target_dependencies(test_hardware_components pluginlib) install(TARGETS test_hardware_components DESTINATION lib ) pluginlib_export_plugin_description_file( - ${PROJECT_NAME} test/test_hardware_components/test_hardware_components.xml + hardware_interface test/test_hardware_components/test_hardware_components.xml ) +<<<<<<< HEAD +======= + + ament_add_gmock(test_resource_manager test/test_resource_manager.cpp) + target_link_libraries(test_resource_manager hardware_interface) + ament_target_dependencies(test_resource_manager ros2_control_test_assets) + +>>>>>>> 727297e (Fix CMake install so overriding works (#926)) ament_add_gmock(test_generic_system test/mock_components/test_generic_system.cpp) target_include_directories(test_generic_system PRIVATE include) - target_link_libraries(test_generic_system ${PROJECT_NAME}) + target_link_libraries(test_generic_system hardware_interface) ament_target_dependencies(test_generic_system pluginlib ros2_control_test_assets ) endif() -ament_export_include_directories( - include +install( + DIRECTORY include/ + DESTINATION include/hardware_interface ) -ament_export_libraries( - fake_components - mock_components - ${PROJECT_NAME} +install( + TARGETS + fake_components + mock_components + hardware_interface + EXPORT export_hardware_interface + RUNTIME DESTINATION bin + ARCHIVE DESTINATION lib + LIBRARY DESTINATION lib ) + +ament_export_targets(export_hardware_interface HAS_LIBRARY_TARGET) ament_export_dependencies(${THIS_PACKAGE_INCLUDE_DEPENDS}) ament_package() ament_generate_version_header(${PROJECT_NAME}) diff --git a/joint_limits/CMakeLists.txt b/joint_limits/CMakeLists.txt index 1376eb446e..4af3ab833f 100644 --- a/joint_limits/CMakeLists.txt +++ b/joint_limits/CMakeLists.txt @@ -1,6 +1,7 @@ -cmake_minimum_required(VERSION 3.5) -project(joint_limits) +cmake_minimum_required(VERSION 3.16) +project(joint_limits LANGUAGES CXX) +<<<<<<< HEAD # Default to C++14 if(NOT CMAKE_CXX_STANDARD) set(CMAKE_CXX_STANDARD 14) @@ -34,33 +35,50 @@ ament_target_dependencies(joint_limits INTERFACE ${THIS_PACKAGE_INCLUDE_DEPENDS} install(DIRECTORY include/ DESTINATION include +======= +if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)") + add_compile_options(-Wall -Wextra) +endif() + +set(THIS_PACKAGE_INCLUDE_DEPENDS + rclcpp + rclcpp_lifecycle +>>>>>>> 727297e (Fix CMake install so overriding works (#926)) +) + +find_package(ament_cmake REQUIRED) +foreach(Dependency IN ITEMS ${THIS_PACKAGE_INCLUDE_DEPENDS}) + find_package(${Dependency} REQUIRED) +endforeach() + +add_library(joint_limits INTERFACE) +target_compile_features(joint_limits INTERFACE cxx_std_17) +target_include_directories(joint_limits INTERFACE + $ + $ ) +ament_target_dependencies(joint_limits INTERFACE ${THIS_PACKAGE_INCLUDE_DEPENDS}) + if(BUILD_TESTING) find_package(ament_cmake_gtest REQUIRED) - find_package(launch_testing_ament_cmake) - find_package(rclcpp) - find_package(rclcpp_lifecycle) + find_package(launch_testing_ament_cmake REQUIRED) ament_add_gtest_executable(joint_limits_rosparam_test test/joint_limits_rosparam_test.cpp) - target_include_directories(joint_limits_rosparam_test PRIVATE include) - ament_target_dependencies(joint_limits_rosparam_test rclcpp rclcpp_lifecycle) + target_link_libraries(joint_limits_rosparam_test joint_limits) ament_add_gtest(joint_limits_urdf_test test/joint_limits_urdf_test.cpp) target_link_libraries(joint_limits_urdf_test joint_limits) add_launch_test(test/joint_limits_rosparam.launch.py) install( - TARGETS - joint_limits_rosparam_test - DESTINATION lib/${PROJECT_NAME} + TARGETS joint_limits_rosparam_test + DESTINATION lib/joint_limits ) install( - FILES - test/joint_limits_rosparam.yaml - DESTINATION share/${PROJECT_NAME}/test + FILES test/joint_limits_rosparam.yaml + DESTINATION share/joint_limits/test ) - endif() install( @@ -72,6 +90,7 @@ install(TARGETS joint_limits ARCHIVE DESTINATION lib LIBRARY DESTINATION lib RUNTIME DESTINATION bin +<<<<<<< HEAD ) ament_export_targets(export_joint_limits HAS_LIBRARY_TARGET) @@ -82,7 +101,11 @@ ament_export_dependencies( ament_export_include_directories( include +======= +>>>>>>> 727297e (Fix CMake install so overriding works (#926)) ) +ament_export_targets(export_joint_limits HAS_LIBRARY_TARGET) +ament_export_dependencies(${THIS_PACKAGE_INCLUDE_DEPENDS}) ament_package() ament_generate_version_header(${PROJECT_NAME}) diff --git a/ros2_control/CMakeLists.txt b/ros2_control/CMakeLists.txt index 28f50184e2..a8ba99730e 100644 --- a/ros2_control/CMakeLists.txt +++ b/ros2_control/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.5) +cmake_minimum_required(VERSION 3.16) project(ros2_control) find_package(ament_cmake REQUIRED) diff --git a/ros2_control_test_assets/CMakeLists.txt b/ros2_control_test_assets/CMakeLists.txt index 9d4743e43e..07054669ef 100644 --- a/ros2_control_test_assets/CMakeLists.txt +++ b/ros2_control_test_assets/CMakeLists.txt @@ -1,19 +1,34 @@ -cmake_minimum_required(VERSION 3.5) -project(ros2_control_test_assets) +cmake_minimum_required(VERSION 3.16) +project(ros2_control_test_assets LANGUAGES CXX) find_package(ament_cmake REQUIRED) -install( - DIRECTORY include/ - DESTINATION include +add_library(ros2_control_test_assets INTERFACE) +target_compile_features(ros2_control_test_assets INTERFACE cxx_std_17) +target_include_directories(ros2_control_test_assets INTERFACE + $ + $ ) install( +<<<<<<< HEAD FILES urdf/test_hardware_components.urdf DESTINATION share/ros2_control_test_assets/urdf ) ament_export_include_directories( include +======= + DIRECTORY include/ + DESTINATION include/ros2_control_test_assets +>>>>>>> 727297e (Fix CMake install so overriding works (#926)) ) +install(TARGETS ros2_control_test_assets + EXPORT export_ros2_control_test_assets + ARCHIVE DESTINATION lib + LIBRARY DESTINATION lib + RUNTIME DESTINATION bin +) + +ament_export_targets(export_ros2_control_test_assets HAS_LIBRARY_TARGET) ament_package() diff --git a/transmission_interface/CMakeLists.txt b/transmission_interface/CMakeLists.txt index f7dd4444b3..01e549cc91 100644 --- a/transmission_interface/CMakeLists.txt +++ b/transmission_interface/CMakeLists.txt @@ -1,17 +1,22 @@ -cmake_minimum_required(VERSION 3.5) -project(transmission_interface) +cmake_minimum_required(VERSION 3.16) +project(transmission_interface LANGUAGES CXX) +<<<<<<< HEAD if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") add_compile_options(-Wall -Wextra -Werror=conversion -Werror=unused-but-set-variable -Werror=return-type # deactivating this, because of issue in upstream class_loader_imp.hpp # -Werror=shadow ) +======= +if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)") + add_compile_options(-Wall -Wextra -Wpedantic) +>>>>>>> 727297e (Fix CMake install so overriding works (#926)) endif() set(THIS_PACKAGE_INCLUDE_DEPENDS - hardware_interface - pluginlib - rclcpp + hardware_interface + pluginlib + rclcpp ) find_package(ament_cmake REQUIRED) @@ -19,28 +24,64 @@ foreach(Dependency IN ITEMS ${THIS_PACKAGE_INCLUDE_DEPENDS}) find_package(${Dependency} REQUIRED) endforeach() -install( - DIRECTORY include/ - DESTINATION include -) - -add_library(${PROJECT_NAME} SHARED +add_library(transmission_interface SHARED src/simple_transmission_loader.cpp src/four_bar_linkage_transmission_loader.cpp src/differential_transmission_loader.cpp ) -target_include_directories(${PROJECT_NAME} PUBLIC include) -ament_target_dependencies(${PROJECT_NAME} ${THIS_PACKAGE_INCLUDE_DEPENDS}) +target_include_directories(transmission_interface PUBLIC + $ + $ +) +ament_target_dependencies(transmission_interface PUBLIC ${THIS_PACKAGE_INCLUDE_DEPENDS}) +pluginlib_export_plugin_description_file(transmission_interface ros2_control_plugins.xml) + +if(BUILD_TESTING) + find_package(ament_cmake_gmock REQUIRED) + + ament_add_gmock(test_simple_transmission + test/simple_transmission_test.cpp + ) + target_link_libraries(test_simple_transmission transmission_interface) + + ament_add_gmock(test_differential_transmission + test/differential_transmission_test.cpp + ) + target_link_libraries(test_differential_transmission transmission_interface) -pluginlib_export_plugin_description_file(${PROJECT_NAME} ros2_control_plugins.xml) + ament_add_gmock(test_four_bar_linkage_transmission + test/four_bar_linkage_transmission_test.cpp + ) + target_link_libraries(test_four_bar_linkage_transmission transmission_interface) + + ament_add_gmock(test_simple_transmission_loader + test/simple_transmission_loader_test.cpp + ) + target_link_libraries(test_simple_transmission_loader transmission_interface) + + ament_add_gmock(test_four_bar_linkage_transmission_loader + test/four_bar_linkage_transmission_loader_test.cpp + ) + target_link_libraries(test_four_bar_linkage_transmission_loader transmission_interface) -install(TARGETS ${PROJECT_NAME} - EXPORT export_${PROJECT_NAME} + ament_add_gmock(test_differential_transmission_loader + test/differential_transmission_loader_test.cpp + ) + target_link_libraries(test_differential_transmission_loader transmission_interface) +endif() + +install( + DIRECTORY include/ + DESTINATION include/transmission_interface +) +install(TARGETS transmission_interface + EXPORT export_transmission_interface RUNTIME DESTINATION bin ARCHIVE DESTINATION lib LIBRARY DESTINATION lib ) +<<<<<<< HEAD if(BUILD_TESTING) find_package(ament_cmake_gmock REQUIRED) @@ -105,5 +146,9 @@ ament_export_libraries( ${PROJECT_NAME} ) +======= +ament_export_targets(export_transmission_interface HAS_LIBRARY_TARGET) +ament_export_dependencies(${THIS_PACKAGE_INCLUDE_DEPENDS}) +>>>>>>> 727297e (Fix CMake install so overriding works (#926)) ament_package() ament_generate_version_header(${PROJECT_NAME}) From 50a699d6c172419b71dc18ceb7b41e2013363aed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20Fr=C3=B6hlich?= Date: Sun, 24 Aug 2025 20:20:09 +0000 Subject: [PATCH 02/10] Fix merge conflicts --- controller_interface/CMakeLists.txt | 78 ------------------------- controller_interface/package.xml | 4 -- controller_manager/CMakeLists.txt | 41 ------------- controller_manager/package.xml | 4 -- hardware_interface/CMakeLists.txt | 29 --------- joint_limits/CMakeLists.txt | 49 ---------------- ros2_control_test_assets/CMakeLists.txt | 8 --- transmission_interface/CMakeLists.txt | 72 ----------------------- 8 files changed, 285 deletions(-) diff --git a/controller_interface/CMakeLists.txt b/controller_interface/CMakeLists.txt index c0f0412b68..6a6e86a19d 100644 --- a/controller_interface/CMakeLists.txt +++ b/controller_interface/CMakeLists.txt @@ -1,13 +1,8 @@ cmake_minimum_required(VERSION 3.16) project(controller_interface LANGUAGES CXX) -<<<<<<< HEAD if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") add_compile_options(-Wall -Wextra -Werror=conversion -Werror=unused-but-set-variable -Werror=return-type -Werror=shadow) -======= -if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)") - add_compile_options(-Wall -Wextra) ->>>>>>> 727297e (Fix CMake install so overriding works (#926)) endif() set(THIS_PACKAGE_INCLUDE_DEPENDS @@ -88,80 +83,7 @@ install(TARGETS controller_interface RUNTIME DESTINATION bin ) -<<<<<<< HEAD -if(BUILD_TESTING) - find_package(ament_cmake_gmock REQUIRED) - - find_package(hardware_interface REQUIRED) - find_package(sensor_msgs REQUIRED) - find_package(geometry_msgs REQUIRED) - - ament_add_gmock(test_controller_interface test/test_controller_interface.cpp) - target_link_libraries(test_controller_interface ${PROJECT_NAME}) - target_include_directories(test_controller_interface PRIVATE include) - - ament_add_gmock(test_controller_with_options test/test_controller_with_options.cpp) - target_link_libraries(test_controller_with_options ${PROJECT_NAME}) - target_include_directories(test_controller_with_options PRIVATE include) - - ament_add_gmock(test_chainable_controller_interface test/test_chainable_controller_interface.cpp) - target_link_libraries(test_chainable_controller_interface ${PROJECT_NAME}) - target_include_directories(test_chainable_controller_interface PRIVATE include) - ament_target_dependencies(test_chainable_controller_interface hardware_interface) - - ament_add_gmock( - test_semantic_component_interface - test/test_semantic_component_interface.cpp - ) - target_include_directories(test_semantic_component_interface PRIVATE include) - ament_target_dependencies( - test_semantic_component_interface - hardware_interface - ) - - ament_add_gmock( - test_force_torque_sensor - test/test_force_torque_sensor.cpp - ) - target_include_directories(test_force_torque_sensor PRIVATE include) - ament_target_dependencies( - test_force_torque_sensor - hardware_interface - ) - - ament_add_gmock( - test_imu_sensor - test/test_imu_sensor.cpp - ) - target_include_directories(test_imu_sensor PRIVATE include) - ament_target_dependencies( - test_imu_sensor - hardware_interface - sensor_msgs - ) - - ament_add_gmock(test_pose_sensor test/test_pose_sensor.cpp) - target_include_directories(test_pose_sensor PRIVATE include) - ament_target_dependencies(test_pose_sensor - hardware_interface - geometry_msgs - ) -endif() - -ament_export_dependencies( - hardware_interface - rclcpp_lifecycle - sensor_msgs -) -ament_export_include_directories( - include -) -ament_export_libraries( - ${PROJECT_NAME} -) -======= ament_export_targets(export_controller_interface HAS_LIBRARY_TARGET) ament_export_dependencies(${THIS_PACKAGE_INCLUDE_DEPENDS}) ->>>>>>> 727297e (Fix CMake install so overriding works (#926)) ament_package() ament_generate_version_header(${PROJECT_NAME}) diff --git a/controller_interface/package.xml b/controller_interface/package.xml index c9d3ad6096..b23070bf72 100644 --- a/controller_interface/package.xml +++ b/controller_interface/package.xml @@ -15,7 +15,6 @@ rclcpp_lifecycle sensor_msgs -<<<<<<< HEAD hardware_interface rclcpp_lifecycle sensor_msgs @@ -25,9 +24,6 @@ ament_cmake_gmock geometry_msgs -======= - ament_cmake_gmock ->>>>>>> 727297e (Fix CMake install so overriding works (#926)) sensor_msgs diff --git a/controller_manager/CMakeLists.txt b/controller_manager/CMakeLists.txt index 2146454735..49f79a2f7e 100644 --- a/controller_manager/CMakeLists.txt +++ b/controller_manager/CMakeLists.txt @@ -1,7 +1,6 @@ cmake_minimum_required(VERSION 3.16) project(controller_manager LANGUAGES CXX) -<<<<<<< HEAD if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") add_compile_options(-Wall -Wextra -Werror=conversion -Werror=unused-but-set-variable -Werror=return-type -Werror=shadow) endif() @@ -15,21 +14,6 @@ set(THIS_PACKAGE_INCLUDE_DEPENDS rclcpp realtime_tools std_msgs -======= -if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)") - add_compile_options(-Wall -Wextra) -endif() - -set(THIS_PACKAGE_INCLUDE_DEPENDS - ament_index_cpp - controller_interface - controller_manager_msgs - diagnostic_updater - hardware_interface - pluginlib - rclcpp - realtime_tools ->>>>>>> 727297e (Fix CMake install so overriding works (#926)) ) find_package(ament_cmake REQUIRED) @@ -116,21 +100,8 @@ if(BUILD_TESTING) ros2_control_test_assets::ros2_control_test_assets ) -<<<<<<< HEAD ament_add_gmock( test_load_controller -======= - ament_add_gmock(test_controller_manager_hardware_error_handling - test/test_controller_manager_hardware_error_handling.cpp - ) - target_link_libraries(test_controller_manager_hardware_error_handling - controller_manager - test_controller - ros2_control_test_assets::ros2_control_test_assets - ) - - ament_add_gmock(test_load_controller ->>>>>>> 727297e (Fix CMake install so overriding works (#926)) test/test_load_controller.cpp APPEND_ENV AMENT_PREFIX_PATH=${ament_index_build_path}_$ ) @@ -211,7 +182,6 @@ if(BUILD_TESTING) ros2_control_test_assets::ros2_control_test_assets ) -<<<<<<< HEAD ament_add_gmock(test_hardware_spawner test/test_hardware_spawner.cpp TIMEOUT 120 @@ -220,19 +190,8 @@ if(BUILD_TESTING) target_link_libraries(test_hardware_spawner ${PROJECT_NAME}) ament_target_dependencies(test_hardware_spawner ros2_control_test_assets) - install(FILES - test/test_controller_spawner_with_type.yaml - test/test_controller_spawner_with_basic_controllers.yaml - test/test_controller_overriding_parameters.yaml - test/test_controller_spawner_wildcard_entries.yaml - test/test_controller_spawner_with_interfaces.yaml - DESTINATION test) - ament_add_gmock( test_hardware_management_srvs -======= - ament_add_gmock(test_hardware_management_srvs ->>>>>>> 727297e (Fix CMake install so overriding works (#926)) test/test_hardware_management_srvs.cpp ) target_link_libraries(test_hardware_management_srvs diff --git a/controller_manager/package.xml b/controller_manager/package.xml index 89cf0d374e..b3e62ea3b3 100644 --- a/controller_manager/package.xml +++ b/controller_manager/package.xml @@ -29,7 +29,6 @@ std_msgs ament_cmake_gmock -<<<<<<< HEAD ament_cmake_pytest hardware_interface_testing launch_testing_ros @@ -40,9 +39,6 @@ robot_state_publisher ros2_control_test_assets sensor_msgs -======= - ros2_control_test_assets ->>>>>>> 727297e (Fix CMake install so overriding works (#926)) ament_cmake diff --git a/hardware_interface/CMakeLists.txt b/hardware_interface/CMakeLists.txt index 79eda8fae5..ab9709d35b 100644 --- a/hardware_interface/CMakeLists.txt +++ b/hardware_interface/CMakeLists.txt @@ -1,13 +1,8 @@ cmake_minimum_required(VERSION 3.16) project(hardware_interface LANGUAGES CXX) -<<<<<<< HEAD if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") add_compile_options(-Wall -Wextra -Werror=conversion -Werror=unused-but-set-variable -Werror=return-type -Werror=shadow) -======= -if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)") - add_compile_options(-Wall -Wextra) ->>>>>>> 727297e (Fix CMake install so overriding works (#926)) endif() set(THIS_PACKAGE_INCLUDE_DEPENDS @@ -101,22 +96,6 @@ if(BUILD_TESTING) target_link_libraries(test_component_parser hardware_interface) ament_target_dependencies(test_component_parser ros2_control_test_assets) -<<<<<<< HEAD -======= - add_library(test_components SHARED - test/test_components/test_actuator.cpp - test/test_components/test_sensor.cpp - test/test_components/test_system.cpp) - target_link_libraries(test_components hardware_interface) - ament_target_dependencies(test_components - pluginlib) - install(TARGETS test_components - DESTINATION lib - ) - pluginlib_export_plugin_description_file( - hardware_interface test/test_components/test_components.xml) - ->>>>>>> 727297e (Fix CMake install so overriding works (#926)) add_library(test_hardware_components SHARED test/test_hardware_components/test_single_joint_actuator.cpp test/test_hardware_components/test_force_torque_sensor.cpp @@ -132,14 +111,6 @@ if(BUILD_TESTING) pluginlib_export_plugin_description_file( hardware_interface test/test_hardware_components/test_hardware_components.xml ) -<<<<<<< HEAD -======= - - ament_add_gmock(test_resource_manager test/test_resource_manager.cpp) - target_link_libraries(test_resource_manager hardware_interface) - ament_target_dependencies(test_resource_manager ros2_control_test_assets) - ->>>>>>> 727297e (Fix CMake install so overriding works (#926)) ament_add_gmock(test_generic_system test/mock_components/test_generic_system.cpp) target_include_directories(test_generic_system PRIVATE include) target_link_libraries(test_generic_system hardware_interface) diff --git a/joint_limits/CMakeLists.txt b/joint_limits/CMakeLists.txt index 4af3ab833f..057c7a7258 100644 --- a/joint_limits/CMakeLists.txt +++ b/joint_limits/CMakeLists.txt @@ -1,41 +1,6 @@ cmake_minimum_required(VERSION 3.16) project(joint_limits LANGUAGES CXX) -<<<<<<< HEAD -# Default to C++14 -if(NOT CMAKE_CXX_STANDARD) - set(CMAKE_CXX_STANDARD 14) -endif() -if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)") - add_compile_options(-Wall -Wextra -Werror=conversion -Werror=unused-but-set-variable -Werror=return-type -Werror=shadow) -endif() - -if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") - add_compile_options(-Wall -Wextra -Wconversion) -endif() - -set(THIS_PACKAGE_INCLUDE_DEPENDS - rclcpp - rclcpp_lifecycle - urdf -) - -find_package(ament_cmake REQUIRED) -foreach(Dependency IN ITEMS ${THIS_PACKAGE_INCLUDE_DEPENDS}) - find_package(${Dependency} REQUIRED) -endforeach() - -add_library(joint_limits INTERFACE) -target_compile_features(joint_limits INTERFACE cxx_std_17) -target_include_directories(joint_limits INTERFACE - $ - $ -) -ament_target_dependencies(joint_limits INTERFACE ${THIS_PACKAGE_INCLUDE_DEPENDS}) - -install(DIRECTORY include/ - DESTINATION include -======= if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)") add_compile_options(-Wall -Wextra) endif() @@ -43,7 +8,6 @@ endif() set(THIS_PACKAGE_INCLUDE_DEPENDS rclcpp rclcpp_lifecycle ->>>>>>> 727297e (Fix CMake install so overriding works (#926)) ) find_package(ament_cmake REQUIRED) @@ -90,19 +54,6 @@ install(TARGETS joint_limits ARCHIVE DESTINATION lib LIBRARY DESTINATION lib RUNTIME DESTINATION bin -<<<<<<< HEAD -) - -ament_export_targets(export_joint_limits HAS_LIBRARY_TARGET) -ament_export_dependencies( - rclcpp - rclcpp_lifecycle -) - -ament_export_include_directories( - include -======= ->>>>>>> 727297e (Fix CMake install so overriding works (#926)) ) ament_export_targets(export_joint_limits HAS_LIBRARY_TARGET) diff --git a/ros2_control_test_assets/CMakeLists.txt b/ros2_control_test_assets/CMakeLists.txt index 07054669ef..a5aadd7f7c 100644 --- a/ros2_control_test_assets/CMakeLists.txt +++ b/ros2_control_test_assets/CMakeLists.txt @@ -11,18 +11,10 @@ target_include_directories(ros2_control_test_assets INTERFACE ) install( -<<<<<<< HEAD FILES urdf/test_hardware_components.urdf DESTINATION share/ros2_control_test_assets/urdf ) -ament_export_include_directories( - include -======= - DIRECTORY include/ - DESTINATION include/ros2_control_test_assets ->>>>>>> 727297e (Fix CMake install so overriding works (#926)) -) install(TARGETS ros2_control_test_assets EXPORT export_ros2_control_test_assets ARCHIVE DESTINATION lib diff --git a/transmission_interface/CMakeLists.txt b/transmission_interface/CMakeLists.txt index 01e549cc91..50bbd6b544 100644 --- a/transmission_interface/CMakeLists.txt +++ b/transmission_interface/CMakeLists.txt @@ -1,16 +1,11 @@ cmake_minimum_required(VERSION 3.16) project(transmission_interface LANGUAGES CXX) -<<<<<<< HEAD if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") add_compile_options(-Wall -Wextra -Werror=conversion -Werror=unused-but-set-variable -Werror=return-type # deactivating this, because of issue in upstream class_loader_imp.hpp # -Werror=shadow ) -======= -if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)") - add_compile_options(-Wall -Wextra -Wpedantic) ->>>>>>> 727297e (Fix CMake install so overriding works (#926)) endif() set(THIS_PACKAGE_INCLUDE_DEPENDS @@ -81,74 +76,7 @@ install(TARGETS transmission_interface LIBRARY DESTINATION lib ) -<<<<<<< HEAD -if(BUILD_TESTING) - find_package(ament_cmake_gmock REQUIRED) - - ament_add_gmock( - test_simple_transmission - test/simple_transmission_test.cpp - ) - target_include_directories(test_simple_transmission PUBLIC include hardware_interface) - ament_target_dependencies(test_simple_transmission hardware_interface) - - ament_add_gmock( - test_differential_transmission - test/differential_transmission_test.cpp - ) - target_include_directories(test_differential_transmission PUBLIC include hardware_interface) - ament_target_dependencies(test_differential_transmission hardware_interface) - - ament_add_gmock( - test_four_bar_linkage_transmission - test/four_bar_linkage_transmission_test.cpp - ) - target_include_directories(test_four_bar_linkage_transmission PUBLIC include hardware_interface) - ament_target_dependencies(test_four_bar_linkage_transmission hardware_interface) - - ament_add_gmock( - test_simple_transmission_loader - test/simple_transmission_loader_test.cpp - ) - target_include_directories(test_simple_transmission_loader PUBLIC include hardware_interface) - ament_target_dependencies(test_simple_transmission_loader hardware_interface) - - ament_add_gmock( - test_four_bar_linkage_transmission_loader - test/four_bar_linkage_transmission_loader_test.cpp - ) - target_include_directories(test_four_bar_linkage_transmission_loader PUBLIC include hardware_interface) - ament_target_dependencies(test_four_bar_linkage_transmission_loader hardware_interface) - - ament_add_gmock( - test_differential_transmission_loader - test/differential_transmission_loader_test.cpp - ) - target_include_directories(test_differential_transmission_loader PUBLIC include hardware_interface) - ament_target_dependencies(test_differential_transmission_loader hardware_interface) - - ament_add_gmock( - test_utils - test/utils_test.cpp - ) - target_include_directories(test_utils PUBLIC include hardware_interface) - ament_target_dependencies(test_utils hardware_interface) -endif() - -ament_export_include_directories( - include -) -ament_export_dependencies( - hardware_interface -) - -ament_export_libraries( - ${PROJECT_NAME} -) - -======= ament_export_targets(export_transmission_interface HAS_LIBRARY_TARGET) ament_export_dependencies(${THIS_PACKAGE_INCLUDE_DEPENDS}) ->>>>>>> 727297e (Fix CMake install so overriding works (#926)) ament_package() ament_generate_version_header(${PROJECT_NAME}) From b8c66a934ee5af64efac283c7b51a37399e05a25 Mon Sep 17 00:00:00 2001 From: Christian Rauch Date: Mon, 25 Aug 2025 11:48:58 +0200 Subject: [PATCH 03/10] install include files (#2482) --- ros2_control_test_assets/CMakeLists.txt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ros2_control_test_assets/CMakeLists.txt b/ros2_control_test_assets/CMakeLists.txt index a5aadd7f7c..a185e957e7 100644 --- a/ros2_control_test_assets/CMakeLists.txt +++ b/ros2_control_test_assets/CMakeLists.txt @@ -15,11 +15,18 @@ install( DESTINATION share/ros2_control_test_assets/urdf ) +install( + DIRECTORY include/ + DESTINATION include +) + install(TARGETS ros2_control_test_assets EXPORT export_ros2_control_test_assets ARCHIVE DESTINATION lib LIBRARY DESTINATION lib RUNTIME DESTINATION bin + INCLUDES + DESTINATION include ) ament_export_targets(export_ros2_control_test_assets HAS_LIBRARY_TARGET) From ee1f74529bff7b0d10d1630de495f28f5b55617d Mon Sep 17 00:00:00 2001 From: Christian Rauch Date: Mon, 25 Aug 2025 12:54:50 +0200 Subject: [PATCH 04/10] add dependency on 'urdf' back (#2483) --- joint_limits/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/joint_limits/CMakeLists.txt b/joint_limits/CMakeLists.txt index 057c7a7258..eed89a67c6 100644 --- a/joint_limits/CMakeLists.txt +++ b/joint_limits/CMakeLists.txt @@ -8,6 +8,7 @@ endif() set(THIS_PACKAGE_INCLUDE_DEPENDS rclcpp rclcpp_lifecycle + urdf ) find_package(ament_cmake REQUIRED) From 979d0693cd5f718c4004267a05b4ddd0e3698f10 Mon Sep 17 00:00:00 2001 From: Christian Rauch Date: Mon, 25 Aug 2025 15:28:48 +0200 Subject: [PATCH 05/10] install missing test configurations (#2485) --- controller_manager/CMakeLists.txt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/controller_manager/CMakeLists.txt b/controller_manager/CMakeLists.txt index 49f79a2f7e..697b24fb8e 100644 --- a/controller_manager/CMakeLists.txt +++ b/controller_manager/CMakeLists.txt @@ -204,7 +204,12 @@ if(BUILD_TESTING) ) find_package(ament_cmake_pytest REQUIRED) - install(FILES test/test_ros2_control_node.yaml + install(FILES + test/test_ros2_control_node.yaml + test/test_controller_spawner_wildcard_entries.yaml + test/test_controller_spawner_with_basic_controllers.yaml + test/test_controller_spawner_with_interfaces.yaml + test/test_controller_spawner_with_type.yaml DESTINATION test) ament_add_pytest_test(test_ros2_control_node test/test_ros2_control_node_launch.py) endif() From c4e54931967bb4df97f4a8565770baf08ddd0308 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Wed, 27 Aug 2025 10:41:48 +0000 Subject: [PATCH 06/10] Use same if condition as on master branch --- controller_interface/CMakeLists.txt | 2 +- controller_manager/CMakeLists.txt | 2 +- hardware_interface/CMakeLists.txt | 2 +- transmission_interface/CMakeLists.txt | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/controller_interface/CMakeLists.txt b/controller_interface/CMakeLists.txt index 6a6e86a19d..cb2bc533d3 100644 --- a/controller_interface/CMakeLists.txt +++ b/controller_interface/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.16) project(controller_interface LANGUAGES CXX) -if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") +if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)") add_compile_options(-Wall -Wextra -Werror=conversion -Werror=unused-but-set-variable -Werror=return-type -Werror=shadow) endif() diff --git a/controller_manager/CMakeLists.txt b/controller_manager/CMakeLists.txt index 697b24fb8e..1bd482c0d5 100644 --- a/controller_manager/CMakeLists.txt +++ b/controller_manager/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.16) project(controller_manager LANGUAGES CXX) -if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") +if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)") add_compile_options(-Wall -Wextra -Werror=conversion -Werror=unused-but-set-variable -Werror=return-type -Werror=shadow) endif() diff --git a/hardware_interface/CMakeLists.txt b/hardware_interface/CMakeLists.txt index ab9709d35b..c66d6faf60 100644 --- a/hardware_interface/CMakeLists.txt +++ b/hardware_interface/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.16) project(hardware_interface LANGUAGES CXX) -if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") +if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)") add_compile_options(-Wall -Wextra -Werror=conversion -Werror=unused-but-set-variable -Werror=return-type -Werror=shadow) endif() diff --git a/transmission_interface/CMakeLists.txt b/transmission_interface/CMakeLists.txt index 50bbd6b544..b62e405fd5 100644 --- a/transmission_interface/CMakeLists.txt +++ b/transmission_interface/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.16) project(transmission_interface LANGUAGES CXX) -if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") +if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)") add_compile_options(-Wall -Wextra -Werror=conversion -Werror=unused-but-set-variable -Werror=return-type # deactivating this, because of issue in upstream class_loader_imp.hpp # -Werror=shadow From 08b7ab6a3f0069898a6c05371b0f508454207652 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Wed, 27 Aug 2025 10:45:20 +0000 Subject: [PATCH 07/10] Readd test_pose_sensor --- controller_interface/CMakeLists.txt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/controller_interface/CMakeLists.txt b/controller_interface/CMakeLists.txt index cb2bc533d3..18947cc2bc 100644 --- a/controller_interface/CMakeLists.txt +++ b/controller_interface/CMakeLists.txt @@ -70,6 +70,15 @@ if(BUILD_TESTING) ament_target_dependencies(test_imu_sensor sensor_msgs ) + + ament_add_gmock(test_pose_sensor test/test_pose_sensor.cpp) + target_link_libraries(test_pose_sensor + controller_interface + hardware_interface::hardware_interface + ) + ament_target_dependencies(test_pose_sensor + sensor_msgs + ) endif() install( From d6f6a69a07d96524425d12ed0447b623e16764ed Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Wed, 27 Aug 2025 10:51:48 +0000 Subject: [PATCH 08/10] Remove unnecessary file --- .../test/test_controller_overriding_parameters.yaml | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 controller_manager/test/test_controller_overriding_parameters.yaml diff --git a/controller_manager/test/test_controller_overriding_parameters.yaml b/controller_manager/test/test_controller_overriding_parameters.yaml deleted file mode 100644 index 115d0ed993..0000000000 --- a/controller_manager/test/test_controller_overriding_parameters.yaml +++ /dev/null @@ -1,5 +0,0 @@ -ctrl_with_parameters_and_type: - ros__parameters: - interface_name: "impedance" - joint_offset: 0.2 - joint_names: ["joint10"] From 214ca21d2ce97632695a97c41728debeff472e3b Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Wed, 27 Aug 2025 10:56:35 +0000 Subject: [PATCH 09/10] Readd test_utils --- transmission_interface/CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/transmission_interface/CMakeLists.txt b/transmission_interface/CMakeLists.txt index b62e405fd5..af3bcfbcde 100644 --- a/transmission_interface/CMakeLists.txt +++ b/transmission_interface/CMakeLists.txt @@ -63,6 +63,11 @@ if(BUILD_TESTING) test/differential_transmission_loader_test.cpp ) target_link_libraries(test_differential_transmission_loader transmission_interface) + + ament_add_gmock(test_utils + test/utils_test.cpp + ) + target_link_libraries(test_utils transmission_interface) endif() install( From ae6a589e9f47dd0f7e2db5f46208c171f80e79e3 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Wed, 27 Aug 2025 11:18:01 +0000 Subject: [PATCH 10/10] Fix msgs dependencies for tests --- controller_interface/CMakeLists.txt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/controller_interface/CMakeLists.txt b/controller_interface/CMakeLists.txt index 18947cc2bc..abc15168fd 100644 --- a/controller_interface/CMakeLists.txt +++ b/controller_interface/CMakeLists.txt @@ -32,6 +32,7 @@ target_compile_definitions(controller_interface PRIVATE "CONTROLLER_INTERFACE_BU if(BUILD_TESTING) find_package(ament_cmake_gmock REQUIRED) + find_package(geometry_msgs REQUIRED) find_package(sensor_msgs REQUIRED) ament_add_gmock(test_controller_interface test/test_controller_interface.cpp) @@ -55,12 +56,18 @@ if(BUILD_TESTING) controller_interface hardware_interface::hardware_interface ) + ament_target_dependencies(test_semantic_component_interface + geometry_msgs + ) ament_add_gmock(test_force_torque_sensor test/test_force_torque_sensor.cpp) target_link_libraries(test_force_torque_sensor controller_interface hardware_interface::hardware_interface ) + ament_target_dependencies(test_force_torque_sensor + geometry_msgs + ) ament_add_gmock(test_imu_sensor test/test_imu_sensor.cpp) target_link_libraries(test_imu_sensor @@ -77,7 +84,7 @@ if(BUILD_TESTING) hardware_interface::hardware_interface ) ament_target_dependencies(test_pose_sensor - sensor_msgs + geometry_msgs ) endif()