-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathCMakeLists.txt
153 lines (135 loc) · 3.32 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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
###
### Rhoban Hardware Abstraction Layer library
### Rhoban 2015
###
cmake_minimum_required(VERSION 3.16.3)
project(RhAL)
find_package(OpenCV 4.2.0 REQUIRED)
set(LIB_SOURCES_DIRECTORY
"${CMAKE_CURRENT_SOURCE_DIR}/Lib")
set(BIN_SOURCES_DIRECTORY
"${CMAKE_CURRENT_SOURCE_DIR}/Bin")
set(TESTS_SOURCES_DIRECTORY
"${CMAKE_CURRENT_SOURCE_DIR}/Tests")
set(EXAMPLES_SOURCES_DIRECTORY
"${CMAKE_CURRENT_SOURCE_DIR}/Examples")
# Build option
option(BUILD_RHAL_TESTS "Build RhAL Tests" OFF)
option(BUILD_RHAL_EXAMPLES "Build RhAL Examples" OFF)
option(BUILD_RHAL_BINARY "Build RhAL Utility Binary" OFF)
# Enable C++17
set(CMAKE_CXX_FLAGS
"${CMAKE_CXX_FLAGS} -std=c++17")
# Enable compiler Warning
set(CMAKE_CXX_FLAGS
"${CMAKE_CXX_FLAGS} -W -Wall")
# Lib source files
set(LIB_SOURCES
Bus/Bus.cpp
Bus/SerialBus.cpp
Protocol/Protocol.cpp
Protocol/DynamixelV1.cpp
Protocol/FakeProtocol.cpp
Protocol/ProtocolFactory.cpp
timestamp.cpp
Manager/Statistics.cpp
Manager/RegistersList.cpp
Manager/ParametersList.cpp
Manager/Register.cpp
Manager/Parameter.cpp
Manager/Device.cpp
Manager/CallManager.cpp
Manager/ConvertionUtils.cpp
Manager/Aggregation.cpp
Manager/BaseManager.cpp
RhAL.cpp
Devices/ExampleDevice1.cpp
Devices/ExampleDevice2.cpp
Devices/IMU.cpp
Devices/Pins.cpp
Devices/PressureSensor.cpp
Devices/DXL.cpp
Devices/RX.cpp
Devices/AX12.cpp
Devices/AX18.cpp
Devices/RX24.cpp
Devices/RX28.cpp
Devices/RX64.cpp
Devices/Dynaban64.cpp
Devices/MX.cpp
Devices/MX12.cpp
Devices/MX28.cpp
Devices/MX64.cpp
Devices/MX106.cpp
Devices/GY85.cpp
Devices/BNO055.cpp
Devices/AHRS/Filter.cpp
Bindings/RhIOBinding.cpp
)
# Tests source files
set(TESTS_SOURCES
testRegister
testJSON
testParameters
testDevice
testBaseManager
testManager
testReadWrite
testSync
#test1
testDynaban
testBinding
)
# Examples source files
set(EXAMPLES_SOURCES
example1
example2
example3
example4
example5
)
# Link Library List
set (LIBRARIES
pthread
${catkin_LIBRARIES}
)
# Prefix with lib directory path
foreach(SOURCE ${LIB_SOURCES})
set (PREFIXED_LIB_SOURCES
${PREFIXED_LIB_SOURCES}
${LIB_SOURCES_DIRECTORY}/${SOURCE}
)
endforeach()
# Build the RhAL Library
add_library(RhAL SHARED ${PREFIXED_LIB_SOURCES})
target_link_libraries(RhAL PUBLIC
RhIO
jsoncpp
serial
tclap
eigen
rhoban_utils
)
target_include_directories(RhAL PUBLIC
${OpenCV_INCLUDE_DIRS}
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/Lib>
)
# Build all Tests binary
if (BUILD_RHAL_TESTS)
foreach(TEST ${TESTS_SOURCES})
add_executable(${TEST} "${TESTS_SOURCES_DIRECTORY}/${TEST}.cpp")
target_link_libraries(${TEST} RhAL ${LIBRARIES})
endforeach()
endif (BUILD_RHAL_TESTS)
# Build all Examples binary
if (BUILD_RHAL_EXAMPLES)
foreach(EXAMPLE ${EXAMPLES_SOURCES})
add_executable(${EXAMPLE} "${EXAMPLES_SOURCES_DIRECTORY}/${EXAMPLE}.cpp")
target_link_libraries(${EXAMPLE} RhAL ${LIBRARIES})
endforeach()
endif (BUILD_RHAL_EXAMPLES)
# Build the utility binary
if (BUILD_RHAL_BINARY)
add_executable(rhal ${BIN_SOURCES_DIRECTORY}/rhal.cpp)
target_link_libraries(rhal RhAL ${LIBRARIES} ${OpenCV_LIBS})
endif (BUILD_RHAL_BINARY)