-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
138 lines (121 loc) · 3.63 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
cmake_minimum_required(VERSION 3.8)
project(motoros2_hw_interfaces)
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()
# find dependencies
# define ROS Package dependencies
set(THIS_PACKAGE_INCLUDE_DEPENDS
geometry_msgs
hardware_interface
motoros2_interfaces
pluginlib
rclcpp
rclcpp_lifecycle
rclpy
std_msgs
sensor_msgs
)
# find dependencies
find_package(ament_cmake REQUIRED)
# find_package(ament_cmake_python REQUIRED)
foreach(Dependency IN ITEMS ${THIS_PACKAGE_INCLUDE_DEPENDS})
find_package(${Dependency} REQUIRED)
endforeach()
# GPIO System hardware interface
add_library(
gpio_hardware_interface
SHARED
src/gpio_system.cpp
)
target_include_directories(
gpio_hardware_interface
PUBLIC
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include/motoros2_hw_interfaces>
)
ament_target_dependencies(gpio_hardware_interface ${THIS_PACKAGE_INCLUDE_DEPENDS})
# MotorOS2 hardware interface
add_library(
motoros2_hardware_interface
SHARED
src/motoros2_hardware_interface.cpp
)
target_include_directories(
motoros2_hardware_interface
PUBLIC
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include/motoros2_hw_interfaces>
)
ament_target_dependencies(motoros2_hardware_interface ${THIS_PACKAGE_INCLUDE_DEPENDS})
# FTS hardware interface
add_library(
fts_hardware_interface
SHARED
src/fts_hardware_interface.cpp
)
target_include_directories(
fts_hardware_interface
PUBLIC
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include/motoros2_hw_interfaces>
)
ament_target_dependencies(fts_hardware_interface ${THIS_PACKAGE_INCLUDE_DEPENDS})
pluginlib_export_plugin_description_file(
hardware_interface motoros2_hw_interfaces.xml
)
if(BUILD_TESTING)
find_package(ament_cmake_gmock REQUIRED)
find_package(ros2_control_test_assets REQUIRED)
ament_add_gmock(test_fts_hardware_interface test/test_fts_hardware_interface.cpp)
target_include_directories(test_fts_hardware_interface PRIVATE include)
ament_target_dependencies(
test_fts_hardware_interface
${THIS_PACKAGE_INCLUDE_DEPENDS}
ros2_control_test_assets
)
ament_add_gmock(test_gpio_system test/test_gpio_system.cpp)
target_include_directories(test_gpio_system PRIVATE include)
ament_target_dependencies(
test_gpio_system
${THIS_PACKAGE_INCLUDE_DEPENDS}
ros2_control_test_assets
)
ament_add_gmock(test_motoros2_hardware_interface test/test_motoros2_hardware_interface.cpp)
target_include_directories(test_motoros2_hardware_interface PRIVATE include)
ament_target_dependencies(
test_motoros2_hardware_interface
${THIS_PACKAGE_INCLUDE_DEPENDS}
ros2_control_test_assets
)
endif()
install(
DIRECTORY include/
DESTINATION include/motoros2_hw_interfaces
)
install(
TARGETS gpio_hardware_interface
EXPORT export_gpio_hardware_interface
RUNTIME DESTINATION bin
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
)
install(
TARGETS motoros2_hardware_interface
EXPORT export_motoros2_hardware_interface
RUNTIME DESTINATION bin
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
)
install(
TARGETS fts_hardware_interface
EXPORT export_fts_hardware_interface
RUNTIME DESTINATION bin
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
)
ament_export_targets(export_gpio_hardware_interface HAS_LIBRARY_TARGET)
ament_export_targets(export_motoros2_hardware_interface HAS_LIBRARY_TARGET)
ament_export_targets(export_fts_hardware_interface HAS_LIBRARY_TARGET)
ament_export_dependencies(${THIS_PACKAGE_INCLUDE_DEPENDS})
ament_package()