1- cmake_minimum_required (VERSION 3.5 )
2- project (admittance_controller)
1+ cmake_minimum_required (VERSION 3.16 )
2+ project (admittance_controller LANGUAGES CXX )
33
4- if (NOT CMAKE_CXX_STANDARD)
5- set (CMAKE_CXX_STANDARD 17)
6- endif ()
7-
8- if (CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
4+ if (CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)" )
95 add_compile_options (-Wall -Wextra -Wpedantic)
106endif ()
117
12- # find dependencies
138set (THIS_PACKAGE_INCLUDE_DEPENDS
149 angles
1510 control_msgs
1611 control_toolbox
1712 controller_interface
18- kinematics_interface
1913 Eigen3
2014 generate_parameter_library
2115 geometry_msgs
2216 hardware_interface
2317 joint_trajectory_controller
18+ kinematics_interface
2419 pluginlib
2520 rclcpp
2621 rclcpp_lifecycle
@@ -39,66 +34,74 @@ foreach(Dependency IN ITEMS ${THIS_PACKAGE_INCLUDE_DEPENDS})
3934 find_package (${Dependency} REQUIRED)
4035endforeach ()
4136
42- add_library (admittance_controller SHARED src/admittance_controller.cpp)
43- target_include_directories (admittance_controller PRIVATE include )
44- generate_parameter_library(admittance_controller_parameters src/admittance_controller_parameters.yaml)
45- target_link_libraries (admittance_controller admittance_controller_parameters)
46- ament_target_dependencies(admittance_controller ${THIS_PACKAGE_INCLUDE_DEPENDS} )
37+ generate_parameter_library(admittance_controller_parameters
38+ src/admittance_controller_parameters.yaml
39+ )
40+
41+ add_library (admittance_controller SHARED
42+ src/admittance_controller.cpp
43+ )
44+ target_compile_features (admittance_controller PUBLIC cxx_std_17)
45+ target_include_directories (admittance_controller PUBLIC
46+ $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR} /include >
47+ $<INSTALL_INTERFACE:include /admittance_controller>
48+ )
49+ target_link_libraries (admittance_controller PUBLIC
50+ admittance_controller_parameters
51+ )
52+ ament_target_dependencies(admittance_controller PUBLIC ${THIS_PACKAGE_INCLUDE_DEPENDS} )
4753
4854# Causes the visibility macros to use dllexport rather than dllimport,
4955# which is appropriate when building the dll but not consuming it.
5056target_compile_definitions (admittance_controller PRIVATE "ADMITTANCE_CONTROLLER_BUILDING_DLL" )
5157
5258pluginlib_export_plugin_description_file(controller_interface admittance_controller.xml)
5359
54- install (DIRECTORY include /
55- DESTINATION include
56- )
57-
58- install (TARGETS admittance_controller admittance_controller_parameters
59- EXPORT export_admittance_controller
60- RUNTIME DESTINATION bin
61- ARCHIVE DESTINATION lib
62- LIBRARY DESTINATION lib
63- )
64-
6560if (BUILD_TESTING)
6661 find_package (ament_cmake_gmock REQUIRED)
67- find_package (control_msgs REQUIRED)
6862 find_package (controller_manager REQUIRED)
69- find_package (controller_interface REQUIRED)
70- find_package (hardware_interface REQUIRED)
7163 find_package (ros2_control_test_assets REQUIRED)
7264
65+ # Dynamically loaded during test
66+ find_package (kinematics_interface_kdl REQUIRED)
67+
7368 # test loading admittance controller
74- add_rostest_with_parameters_gmock(test_load_admittance_controller test /test_load_admittance_controller.cpp
75- ${CMAKE_CURRENT_SOURCE_DIR} /test /test_params.yaml)
76- target_include_directories (test_load_admittance_controller PUBLIC ${GMOCK_INCLUDE_DIRS} )
77- target_link_libraries (test_load_admittance_controller ${GMOCK_LIBRARIES} )
78- ament_target_dependencies(
79- test_load_admittance_controller
69+ add_rostest_with_parameters_gmock(test_load_admittance_controller
70+ test /test_load_admittance_controller.cpp
71+ ${CMAKE_CURRENT_SOURCE_DIR} /test /test_params.yaml
72+ )
73+ ament_target_dependencies(test_load_admittance_controller
8074 controller_manager
8175 hardware_interface
8276 ros2_control_test_assets
8377 )
78+
8479 # test admittance controller function
85- add_rostest_with_parameters_gmock(test_admittance_controller test /test_admittance_controller.cpp
86- ${CMAKE_CURRENT_SOURCE_DIR} /test /test_params.yaml)
87- target_include_directories (test_admittance_controller PRIVATE include )
80+ add_rostest_with_parameters_gmock(test_admittance_controller
81+ test /test_admittance_controller.cpp
82+ ${CMAKE_CURRENT_SOURCE_DIR} /test /test_params.yaml
83+ )
8884 target_link_libraries (test_admittance_controller admittance_controller)
89- ament_target_dependencies(
90- test_admittance_controller
85+ ament_target_dependencies(test_admittance_controller
9186 control_msgs
9287 controller_interface
9388 hardware_interface
9489 ros2_control_test_assets
9590 )
9691endif ()
9792
98- ament_export_targets(
99- export_admittance_controller HAS_LIBRARY_TARGET
93+ install (
94+ DIRECTORY include /
95+ DESTINATION include /admittance_controller
10096)
101- ament_export_dependencies(
102- ${THIS_PACKAGE_INCLUDE_DEPENDS}
97+
98+ install (TARGETS admittance_controller admittance_controller_parameters
99+ EXPORT export_admittance_controller
100+ RUNTIME DESTINATION bin
101+ ARCHIVE DESTINATION lib
102+ LIBRARY DESTINATION lib
103103)
104+
105+ ament_export_targets(export_admittance_controller HAS_LIBRARY_TARGET)
106+ ament_export_dependencies(${THIS_PACKAGE_INCLUDE_DEPENDS} )
104107ament_package()
0 commit comments