1
- cmake_minimum_required (VERSION 3.5 )
2
- project (admittance_controller)
1
+ cmake_minimum_required (VERSION 3.16 )
2
+ project (admittance_controller LANGUAGES CXX )
3
3
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)" )
9
5
add_compile_options (-Wall -Wextra -Wpedantic)
10
6
endif ()
11
7
12
- # find dependencies
13
8
set (THIS_PACKAGE_INCLUDE_DEPENDS
14
9
angles
15
10
control_msgs
16
11
control_toolbox
17
12
controller_interface
18
- kinematics_interface
19
13
Eigen3
20
14
generate_parameter_library
21
15
geometry_msgs
22
16
hardware_interface
23
17
joint_trajectory_controller
18
+ kinematics_interface
24
19
pluginlib
25
20
rclcpp
26
21
rclcpp_lifecycle
@@ -39,66 +34,74 @@ foreach(Dependency IN ITEMS ${THIS_PACKAGE_INCLUDE_DEPENDS})
39
34
find_package (${Dependency} REQUIRED)
40
35
endforeach ()
41
36
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} )
47
53
48
54
# Causes the visibility macros to use dllexport rather than dllimport,
49
55
# which is appropriate when building the dll but not consuming it.
50
56
target_compile_definitions (admittance_controller PRIVATE "ADMITTANCE_CONTROLLER_BUILDING_DLL" )
51
57
52
58
pluginlib_export_plugin_description_file(controller_interface admittance_controller.xml)
53
59
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
-
65
60
if (BUILD_TESTING)
66
61
find_package (ament_cmake_gmock REQUIRED)
67
- find_package (control_msgs REQUIRED)
68
62
find_package (controller_manager REQUIRED)
69
- find_package (controller_interface REQUIRED)
70
- find_package (hardware_interface REQUIRED)
71
63
find_package (ros2_control_test_assets REQUIRED)
72
64
65
+ # Dynamically loaded during test
66
+ find_package (kinematics_interface_kdl REQUIRED)
67
+
73
68
# 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
80
74
controller_manager
81
75
hardware_interface
82
76
ros2_control_test_assets
83
77
)
78
+
84
79
# 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
+ )
88
84
target_link_libraries (test_admittance_controller admittance_controller)
89
- ament_target_dependencies(
90
- test_admittance_controller
85
+ ament_target_dependencies(test_admittance_controller
91
86
control_msgs
92
87
controller_interface
93
88
hardware_interface
94
89
ros2_control_test_assets
95
90
)
96
91
endif ()
97
92
98
- ament_export_targets(
99
- export_admittance_controller HAS_LIBRARY_TARGET
93
+ install (
94
+ DIRECTORY include /
95
+ DESTINATION include /admittance_controller
100
96
)
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
103
103
)
104
+
105
+ ament_export_targets(export_admittance_controller HAS_LIBRARY_TARGET)
106
+ ament_export_dependencies(${THIS_PACKAGE_INCLUDE_DEPENDS} )
104
107
ament_package()
0 commit comments