Skip to content

Commit

Permalink
Fix overriding of install (ros-controls#510)
Browse files Browse the repository at this point in the history
* Fix overriding of install

Signed-off-by: Tyler Weaver <tyler@picknik.ai>

* Update admittance_controller/CMakeLists.txt

Co-authored-by: Chris Thrasher <chrisjthrasher@gmail.com>

* Update ros2_controllers/CMakeLists.txt

Co-authored-by: Chris Thrasher <chrisjthrasher@gmail.com>

* Remove unused lists

* Use THIS_PACKAGE_INCLUDE_DEPENDS list

---------

Signed-off-by: Tyler Weaver <tyler@picknik.ai>
Co-authored-by: Chris Thrasher <chrisjthrasher@gmail.com>
  • Loading branch information
2 people authored and fmauch committed May 11, 2023
1 parent 7178c3e commit 4db1eb0
Show file tree
Hide file tree
Showing 24 changed files with 452 additions and 614 deletions.
89 changes: 46 additions & 43 deletions admittance_controller/CMakeLists.txt
@@ -1,26 +1,21 @@
cmake_minimum_required(VERSION 3.5)
project(admittance_controller)
cmake_minimum_required(VERSION 3.16)
project(admittance_controller LANGUAGES CXX)

if(NOT CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 17)
endif()

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 -Wpedantic)
endif()

# find dependencies
set(THIS_PACKAGE_INCLUDE_DEPENDS
angles
control_msgs
control_toolbox
controller_interface
kinematics_interface
Eigen3
generate_parameter_library
geometry_msgs
hardware_interface
joint_trajectory_controller
kinematics_interface
pluginlib
rclcpp
rclcpp_lifecycle
Expand All @@ -39,66 +34,74 @@ foreach(Dependency IN ITEMS ${THIS_PACKAGE_INCLUDE_DEPENDS})
find_package(${Dependency} REQUIRED)
endforeach()

add_library(admittance_controller SHARED src/admittance_controller.cpp)
target_include_directories(admittance_controller PRIVATE include)
generate_parameter_library(admittance_controller_parameters src/admittance_controller_parameters.yaml)
target_link_libraries(admittance_controller admittance_controller_parameters)
ament_target_dependencies(admittance_controller ${THIS_PACKAGE_INCLUDE_DEPENDS})
generate_parameter_library(admittance_controller_parameters
src/admittance_controller_parameters.yaml
)

add_library(admittance_controller SHARED
src/admittance_controller.cpp
)
target_compile_features(admittance_controller PUBLIC cxx_std_17)
target_include_directories(admittance_controller PUBLIC
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include/admittance_controller>
)
target_link_libraries(admittance_controller PUBLIC
admittance_controller_parameters
)
ament_target_dependencies(admittance_controller 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(admittance_controller PRIVATE "ADMITTANCE_CONTROLLER_BUILDING_DLL")

pluginlib_export_plugin_description_file(controller_interface admittance_controller.xml)

install(DIRECTORY include/
DESTINATION include
)

install(TARGETS admittance_controller admittance_controller_parameters
EXPORT export_admittance_controller
RUNTIME DESTINATION bin
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
)

if(BUILD_TESTING)
find_package(ament_cmake_gmock REQUIRED)
find_package(control_msgs REQUIRED)
find_package(controller_manager REQUIRED)
find_package(controller_interface REQUIRED)
find_package(hardware_interface REQUIRED)
find_package(ros2_control_test_assets REQUIRED)

# Dynamically loaded during test
find_package(kinematics_interface_kdl REQUIRED)

# test loading admittance controller
add_rostest_with_parameters_gmock(test_load_admittance_controller test/test_load_admittance_controller.cpp
${CMAKE_CURRENT_SOURCE_DIR}/test/test_params.yaml)
target_include_directories(test_load_admittance_controller PUBLIC ${GMOCK_INCLUDE_DIRS})
target_link_libraries(test_load_admittance_controller ${GMOCK_LIBRARIES})
ament_target_dependencies(
test_load_admittance_controller
add_rostest_with_parameters_gmock(test_load_admittance_controller
test/test_load_admittance_controller.cpp
${CMAKE_CURRENT_SOURCE_DIR}/test/test_params.yaml
)
ament_target_dependencies(test_load_admittance_controller
controller_manager
hardware_interface
ros2_control_test_assets
)

# test admittance controller function
add_rostest_with_parameters_gmock(test_admittance_controller test/test_admittance_controller.cpp
${CMAKE_CURRENT_SOURCE_DIR}/test/test_params.yaml)
target_include_directories(test_admittance_controller PRIVATE include)
add_rostest_with_parameters_gmock(test_admittance_controller
test/test_admittance_controller.cpp
${CMAKE_CURRENT_SOURCE_DIR}/test/test_params.yaml
)
target_link_libraries(test_admittance_controller admittance_controller)
ament_target_dependencies(
test_admittance_controller
ament_target_dependencies(test_admittance_controller
control_msgs
controller_interface
hardware_interface
ros2_control_test_assets
)
endif()

ament_export_targets(
export_admittance_controller HAS_LIBRARY_TARGET
install(
DIRECTORY include/
DESTINATION include/admittance_controller
)
ament_export_dependencies(
${THIS_PACKAGE_INCLUDE_DEPENDS}

install(TARGETS admittance_controller admittance_controller_parameters
EXPORT export_admittance_controller
RUNTIME DESTINATION bin
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
)

ament_export_targets(export_admittance_controller HAS_LIBRARY_TARGET)
ament_export_dependencies(${THIS_PACKAGE_INCLUDE_DEPENDS})
ament_package()
2 changes: 0 additions & 2 deletions admittance_controller/package.xml
Expand Up @@ -33,9 +33,7 @@
<depend>trajectory_msgs</depend>

<test_depend>ament_cmake_gmock</test_depend>
<test_depend>control_msgs</test_depend>
<test_depend>controller_manager</test_depend>
<test_depend>hardware_interface</test_depend>
<test_depend>kinematics_interface_kdl</test_depend>
<test_depend>ros2_control_test_assets</test_depend>

Expand Down
90 changes: 36 additions & 54 deletions diff_drive_controller/CMakeLists.txt
@@ -1,28 +1,23 @@
cmake_minimum_required(VERSION 3.5)
project(diff_drive_controller)
cmake_minimum_required(VERSION 3.16)
project(diff_drive_controller LANGUAGES CXX)

# Default to C++17
if(NOT CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
endif()

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)
endif()

set(THIS_PACKAGE_INCLUDE_DEPENDS
controller_interface
geometry_msgs
hardware_interface
nav_msgs
pluginlib
rclcpp
rclcpp_lifecycle
rcpputils
realtime_tools
tf2
tf2_msgs
controller_interface
generate_parameter_library
geometry_msgs
hardware_interface
nav_msgs
pluginlib
rclcpp
rclcpp_lifecycle
rcpputils
realtime_tools
tf2
tf2_msgs
)

find_package(ament_cmake REQUIRED)
Expand All @@ -31,39 +26,27 @@ foreach(Dependency IN ITEMS ${THIS_PACKAGE_INCLUDE_DEPENDS})
find_package(${Dependency} REQUIRED)
endforeach()

find_package(generate_parameter_library REQUIRED)

generate_parameter_library(diff_drive_controller_parameters
src/diff_drive_controller_parameter.yaml
)

add_library(${PROJECT_NAME} SHARED
add_library(diff_drive_controller SHARED
src/diff_drive_controller.cpp
src/odometry.cpp
src/speed_limiter.cpp
)
target_include_directories(${PROJECT_NAME}
PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>)
ament_target_dependencies(${PROJECT_NAME} ${THIS_PACKAGE_INCLUDE_DEPENDS})
target_link_libraries(${PROJECT_NAME}
diff_drive_controller_parameters
target_compile_features(diff_drive_controller PUBLIC cxx_std_17)
target_include_directories(diff_drive_controller PUBLIC
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include/diff_drive_controller>
)
target_link_libraries(diff_drive_controller PUBLIC diff_drive_controller_parameters)
ament_target_dependencies(diff_drive_controller 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 "DIFF_DRIVE_CONTROLLER_BUILDING_DLL")
target_compile_definitions(diff_drive_controller PRIVATE "DIFF_DRIVE_CONTROLLER_BUILDING_DLL")
pluginlib_export_plugin_description_file(controller_interface diff_drive_plugin.xml)

install(DIRECTORY include/
DESTINATION include
)

install(TARGETS ${PROJECT_NAME}
RUNTIME DESTINATION bin
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
)

if(BUILD_TESTING)
find_package(ament_cmake_gmock REQUIRED)
find_package(controller_manager REQUIRED)
Expand All @@ -72,11 +55,9 @@ if(BUILD_TESTING)
ament_add_gmock(test_diff_drive_controller
test/test_diff_drive_controller.cpp
ENV config_file=${CMAKE_CURRENT_SOURCE_DIR}/test/config/test_diff_drive_controller.yaml)
target_include_directories(test_diff_drive_controller PRIVATE include)
target_link_libraries(test_diff_drive_controller
${PROJECT_NAME}
diff_drive_controller
)

ament_target_dependencies(test_diff_drive_controller
geometry_msgs
hardware_interface
Expand All @@ -88,25 +69,26 @@ if(BUILD_TESTING)
tf2_msgs
)

ament_add_gmock(
test_load_diff_drive_controller
ament_add_gmock(test_load_diff_drive_controller
test/test_load_diff_drive_controller.cpp
)
target_include_directories(test_load_diff_drive_controller PRIVATE include)
ament_target_dependencies(test_load_diff_drive_controller
controller_manager
ros2_control_test_assets
)

endif()

ament_export_dependencies(
${THIS_PACKAGE_INCLUDE_DEPENDS}
)
ament_export_include_directories(
include
install(
DIRECTORY include/
DESTINATION include/diff_drive_controller
)
ament_export_libraries(
${PROJECT_NAME}
install(TARGETS diff_drive_controller diff_drive_controller_parameters
EXPORT export_diff_drive_controller
RUNTIME DESTINATION bin
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
)

ament_export_targets(export_diff_drive_controller HAS_LIBRARY_TARGET)
ament_export_dependencies(${THIS_PACKAGE_INCLUDE_DEPENDS})
ament_package()
3 changes: 1 addition & 2 deletions diff_drive_controller/package.xml
Expand Up @@ -16,15 +16,14 @@
<depend>geometry_msgs</depend>
<depend>hardware_interface</depend>
<depend>nav_msgs</depend>
<depend>pluginlib</depend>
<depend>rclcpp</depend>
<depend>rclcpp_lifecycle</depend>
<depend>rcpputils</depend>
<depend>realtime_tools</depend>
<depend>tf2</depend>
<depend>tf2_msgs</depend>

<build_depend>pluginlib</build_depend>

<test_depend>ament_cmake_gmock</test_depend>
<test_depend>controller_manager</test_depend>
<test_depend>ros2_control_test_assets</test_depend>
Expand Down

0 comments on commit 4db1eb0

Please sign in to comment.