17
17
18
18
# Catkin part
19
19
20
-
21
20
cmake_minimum_required (VERSION 2.4.6 )
22
21
22
+ if (COMMAND cmake_policy )
23
+ cmake_policy (SET CMP0003 NEW )
24
+ endif (COMMAND cmake_policy )
25
+
26
+ SET (PROJECT_ORG stack-of-tasks )
27
+ set (PROJECT_DESCRIPTION "Dynamic graph bridge library" )
28
+ set (PROJECT_NAME dynamic_graph_bridge )
29
+ set (PROJECT_URL "https://github.com/stack-of-tasks/dynamic_graph_bridge" )
30
+ set (PROJECT_SUFFIX "-v3" )
31
+
32
+ # Export CMake Target
33
+ SET (PROJECT_USE_CMAKE_EXPORT TRUE )
34
+
35
+ # Disable failing compilation when a compilation error appears
36
+ set (CXX_DISABLE_WERROR False )
37
+
38
+ # Make sure that every header is generated in dynamic-graph
39
+ SET (CUSTOM_HEADER_DIR ${PROJECT_NAME} )
40
+
23
41
include (cmake/base.cmake )
42
+
43
+ # Specify the project.
44
+ cmake_policy (SET CMP0048 NEW )
45
+ PROJECT (${PROJECT_NAME}
46
+ LANGUAGES
47
+ CXX
48
+ VERSION
49
+ ${PROJECT_VERSION_MAJOR} .${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}
50
+ )
51
+
52
+
24
53
INCLUDE (cmake/boost.cmake )
25
54
INCLUDE (cmake/eigen.cmake )
26
55
include (cmake/ros.cmake )
27
56
include (cmake/GNUInstallDirs.cmake )
28
57
include (cmake/python.cmake )
29
58
include (cmake/test.cmake )
30
59
31
- project ( dynamic_graph_bridge )
32
-
33
- SET ( CATKIN_REQUIRED_COMPONENTS roscpp std_msgs message_generation std_srvs geometry_msgs sensor_msgs tf )
60
+ SET ( CATKIN_REQUIRED_COMPONENTS
61
+ roscpp std_msgs message_generation std_srvs geometry_msgs sensor_msgs
62
+ tf tf2_bullet )
34
63
SET (CATKIN_DEPENDS_LIBRARIES ros_bridge sot_loader )
35
64
36
65
## LAAS cmake submodule part
37
- set (PROJECT_DESCRIPTION "Dynamic graph bridge library" )
38
- set (PROJECT_NAME dynamic_graph_bridge )
39
- set (PROJECT_URL "https://github.com/stack-of-tasks/dynamic_graph_bridge" )
40
- set (PROJECT_SUFFIX "-v3" )
41
66
42
67
SET (DOXYGEN_USE_MATHJAX YES )
43
68
69
+ # Add option build python interface
44
70
OPTION (BUILD_PYTHON_INTERFACE "Build the python binding" ON )
45
- IF (BUILD_PYTHON_INTERFACE )
46
- FINDPYTHON ()
47
- STRING (REGEX REPLACE "-" "_" PY_NAME ${PROJECT_NAME} )
48
- INCLUDE_DIRECTORIES (${PYTHON_INCLUDE_DIRS} )
49
- ADD_REQUIRED_DEPENDENCY ("dynamic-graph-python >= 3.0.0" )
50
- SET (CATKIN_REQUIRED_COMPONENTS ${CATKIN_REQUIRED_COMPONENTS} rospy )
51
- SET (CATKIN_DEPENDS_LIBRARIES ${CATKIN_DEPENDS_LIBRARIES} ros_interpreter )
52
- ENDIF (BUILD_PYTHON_INTERFACE )
53
-
54
- SET (CATKIN_ENABLE_TESTING OFF )
55
-
56
- find_package (catkin REQUIRED COMPONENTS ${CATKIN_REQUIRED_COMPONENTS} )
57
- find_package (realtime_tools )
58
71
59
- set (CXX_DISABLE_WERROR False )
60
72
set (CUSTOM_HEADER_DIR dynamic_graph_bridge )
61
73
set (${PROJECT_NAME} _HEADERS
62
74
include /dynamic_graph_bridge/ros_init.hh
@@ -69,10 +81,28 @@ IF(BUILD_PYTHON_INTERFACE)
69
81
include /dynamic_graph_bridge/ros_interpreter.hh )
70
82
ENDIF (BUILD_PYTHON_INTERFACE )
71
83
84
+ IF (BUILD_PYTHON_INTERFACE )
85
+ FINDPYTHON ()
86
+ STRING (REGEX REPLACE "-" "_" PY_NAME ${PROJECT_NAME} )
87
+
88
+ ADD_PROJECT_DEPENDENCY (dynamic-graph-python REQUIRED )
89
+ SET (CATKIN_REQUIRED_COMPONENTS ${CATKIN_REQUIRED_COMPONENTS} rospy )
90
+ SET (CATKIN_DEPENDS_LIBRARIES ${CATKIN_DEPENDS_LIBRARIES} ros_interpreter )
91
+ ENDIF (BUILD_PYTHON_INTERFACE )
92
+
93
+ SET (CATKIN_ENABLE_TESTING OFF )
94
+
95
+ MESSAGE (STATUS "CATKIN_REQUIRED_COMPONENTS: ${CATKIN_REQUIRED_COMPONENTS} " )
96
+ # Add catkin components
97
+ find_package (catkin REQUIRED
98
+ COMPONENTS ${CATKIN_REQUIRED_COMPONENTS} )
99
+ find_package (realtime_tools )
100
+
101
+
72
102
SEARCH_FOR_EIGEN ()
73
103
SEARCH_FOR_BOOST ()
74
104
75
- SETUP_PROJECT ()
105
+ SETUP_PROJECT_PACKAGE_FINALIZE ()
76
106
77
107
set (EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR} /bin )
78
108
set (LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR} /lib )
@@ -88,15 +118,13 @@ set(PKG_CONFIG_ADDITIONAL_VARIABLES
88
118
SET (SOT_PKGNAMES
89
119
dynamic_graph_bridge_msgs )
90
120
91
- add_required_dependency (roscpp )
92
- add_required_dependency (tf )
93
- add_required_dependency ("realtime_tools >= 1.8" )
94
- add_required_dependency (tf2_bullet )
121
+ #add_project_dependency(realtime_tools 1.8 REQUIRED)
122
+
95
123
96
- ADD_REQUIRED_DEPENDENCY ( " dynamic-graph >= 3.0.0" )
97
- ADD_REQUIRED_DEPENDENCY ( " sot-core >= 3.0.0" )
124
+ ADD_PROJECT_DEPENDENCY ( dynamic-graph 3.0.0 REQUIRED )
125
+ ADD_PROJECT_DEPENDENCY ( sot-core REQUIRED )
98
126
99
- add_required_dependency (dynamic_graph_bridge_msgs )
127
+ ADD_PROJECT_dependency (dynamic_graph_bridge_msgs )
100
128
101
129
foreach (sot_pkgname ${SOT_PKGNAMES} )
102
130
add_required_dependency (${sot_pkgname} )
@@ -110,13 +138,36 @@ add_library(ros_bridge
110
138
include /dynamic_graph_bridge/ros_init.hh src/ros_init.cpp
111
139
src/sot_to_ros.hh src/sot_to_ros.cpp
112
140
)
113
- pkg_config_use_dependency (ros_bridge tf2_bullet )
114
- pkg_config_use_dependency (ros_bridge dynamic_graph_bridge_msgs )
115
- install (TARGETS ros_bridge DESTINATION lib )
116
141
117
- # Add ros_bridge in the dynamic-graph-bridge pkg-config file.
142
+ MESSAGE (STATUS "catkin_INCLUDE_DIRS: ${catkin_INCLUDE_DIRS} " )
143
+
144
+ include_directories (${catkin_INCLUDE_DIRS} )
145
+
146
+ target_include_directories (ros_bridge
147
+ PUBLIC
148
+ $< BUILD_INTERFACE:${CMAKE_BUILD_DIR} /include>
149
+ $< BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR} /include>
150
+ $< BUILD_INTERFACE:${EIGEN3_INCLUDE_DIR} >
151
+ $< BUILD_INTERFACE:${PYTHON_INCLUDE_DIRS} >
152
+ INTERFACE ${EIGEN3_INCLUDE_DIR}
153
+ $< INSTALL_INTERFACE:include>
154
+ )
118
155
156
+ #target_link_libraries(ros_bridge tf2_bullet)
157
+ target_link_libraries (ros_bridge
158
+ dynamic-graph::dynamic-graph )
159
+ target_link_libraries (ros_bridge
160
+ dynamic-graph::dynamic-graph )
119
161
162
+ MESSAGE (STATUS "catkin_LIBRARIES: ${catkin_LIBRARIES} " )
163
+ target_link_libraries (ros_bridge
164
+ ${catkin_LIBRARIES} )
165
+
166
+ install (TARGETS ros_bridge
167
+ EXPORT ${TARGETS_EXPORT_NAME}
168
+ DESTINATION lib )
169
+
170
+ # Add ros_bridge in the dynamic-graph-bridge pkg-config file.
120
171
# Make sure rpath are preserved during the install as ROS dependencies
121
172
# are not installed.
122
173
set_target_properties (ros_bridge PROPERTIES BUILD_WITH_INSTALL_RPATH True
@@ -126,9 +177,22 @@ macro(compile_plugin NAME)
126
177
message (lib path ${LIBRARY_OUTPUT_PATH} )
127
178
file (MAKE_DIRECTORY "${LIBRARY_OUTPUT_PATH} /dynamic_graph/ros/${NAME} " )
128
179
add_library (${NAME} SHARED src/${NAME}.cpp src/${NAME}.hh )
129
- pkg_config_use_dependency (${NAME} dynamic-graph )
130
- pkg_config_use_dependency (${NAME} sot-core )
131
- pkg_config_use_dependency (${NAME} dynamic_graph_bridge_msgs )
180
+
181
+ # Headers
182
+ target_include_directories (${NAME}
183
+ PUBLIC
184
+ $< BUILD_INTERFACE:${CMAKE_BUILD_DIR} /include>
185
+ $< BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR} /include>
186
+ $< BUILD_INTERFACE:${EIGEN3_INCLUDE_DIR} >
187
+ $< BUILD_INTERFACE:${PYTHON_INCLUDE_DIRS} >
188
+ INTERFACE ${EIGEN3_INCLUDE_DIR}
189
+ $< INSTALL_INTERFACE:include>
190
+ )
191
+
192
+ # Libraries
193
+ target_link_libraries (${NAME} dynamic-graph::dynamic-graph )
194
+ target_link_libraries (${NAME} sot-core::sot-core )
195
+ target_link_libraries (${NAME} ${CATKIN_DEPENDS_LIBRARIES} )
132
196
add_dependencies (${NAME} ros_bridge )
133
197
target_link_libraries (${NAME} ros_bridge )
134
198
set_target_properties (${NAME} PROPERTIES BUILD_WITH_INSTALL_RPATH True )
@@ -137,7 +201,8 @@ macro(compile_plugin NAME)
137
201
endmacro ()
138
202
139
203
# Build Sot Entities
140
- set (listplugins ros_publish ros_subscribe ros_queued_subscribe ros_tf_listener ros_time )
204
+ set (listplugins
205
+ ros_publish ros_subscribe ros_queued_subscribe ros_tf_listener ros_time )
141
206
142
207
foreach (aplugin ${listplugins} )
143
208
compile_plugin (${aplugin} )
@@ -152,22 +217,29 @@ IF(BUILD_PYTHON_INTERFACE)
152
217
ros/${NAME}/wrap
153
218
)
154
219
155
- PKG_CONFIG_USE_DEPENDENCY (ros/${NAME}/wrap realtime_tools )
156
- PKG_CONFIG_USE_DEPENDENCY (ros/${NAME}/wrap dynamic_graph )
157
- PKG_CONFIG_USE_DEPENDENCY (ros/${NAME}/wrap sot-core )
220
+ # PKG_CONFIG_USE_DEPENDENCY(ros/${NAME}/wrap realtime_tools)
221
+ # PKG_CONFIG_USE_DEPENDENCY(ros/${NAME}/wrap dynamic_graph)
222
+ # PKG_CONFIG_USE_DEPENDENCY(ros/${NAME}/wrap sot-core)
158
223
PKG_CONFIG_USE_DEPENDENCY (ros/${NAME}/wrap dynamic_graph_bridge_msgs )
159
224
endforeach ()
160
225
161
226
# ros_interperter library.
162
227
163
228
add_library (ros_interpreter src/ros_interpreter.cpp )
164
- pkg_config_use_dependency (ros_interpreter dynamic-graph )
165
- pkg_config_use_dependency (ros_interpreter sot-core )
166
- pkg_config_use_dependency (ros_interpreter roscpp )
229
+ # pkg_config_use_dependency(ros_interpreter dynamic-graph)
230
+ # pkg_config_use_dependency(ros_interpreter sot-core)
231
+ # pkg_config_use_dependency(ros_interpreter roscpp)
167
232
pkg_config_use_dependency (ros_interpreter dynamic_graph_bridge_msgs )
168
- pkg_config_use_dependency (ros_interpreter dynamic-graph-python )
233
+ # pkg_config_use_dependency(ros_interpreter dynamic-graph-python)
169
234
170
235
add_dependencies (ros_interpreter ros_bridge )
236
+ target_link_libraries (ros_interpreter roscpp )
237
+ target_link_libraries (ros_interpreter
238
+ dynamic-graph::dynamic-graph )
239
+ target_link_libraries (ros_interpreter sot-core::sot-core )
240
+ target_link_libraries (ros_interpreter
241
+ dynamic-graph-python::dynamic-graph-python )
242
+ target_link_libraries (ros_interpreter realtime_tools )
171
243
target_link_libraries (ros_interpreter ros_bridge )
172
244
set_target_properties (ros_interpreter PROPERTIES BUILD_WITH_INSTALL_RPATH True
173
245
LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR} /lib )
@@ -176,18 +248,21 @@ IF(BUILD_PYTHON_INTERFACE)
176
248
177
249
ENDIF (BUILD_PYTHON_INTERFACE )
178
250
251
+ MESSAGE (STATUS "CATKIN_DEPENDS_LIBRARIES: ${CATKIN_DEPENDS_LIBRARIES} " )
252
+
179
253
# Stand alone embedded intepreter with a robot controller.
180
- add_executable (geometric_simu src/geometric_simu.cpp src/sot_loader.cpp src/sot_loader_basic.cpp )
181
- pkg_config_use_dependency (geometric_simu tf )
182
- pkg_config_use_dependency (geometric_simu roscpp )
183
- pkg_config_use_dependency (geometric_simu dynamic-graph )
184
- target_link_libraries (geometric_simu ros_bridge tf ${Boost_LIBRARIES} ${CMAKE_DL_LIBS} )
254
+ add_executable (geometric_simu src/geometric_simu.cpp
255
+ src/sot_loader.cpp src/sot_loader_basic.cpp )
256
+ target_link_libraries (geometric_simu dynamic-graph::dynamic-graph )
257
+ target_link_libraries (geometric_simu ros_bridge tf ${Boost_LIBRARIES}
258
+ ${CMAKE_DL_LIBS} )
259
+ target_link_libraries (geometric_simu ${CATKIN_DEPENDS_LIBRARIES} )
185
260
186
261
# Sot loader library
187
262
add_library (sot_loader src/sot_loader.cpp src/sot_loader_basic.cpp )
188
- pkg_config_use_dependency (sot_loader dynamic-graph )
189
- pkg_config_use_dependency (sot_loader sot-core )
190
- target_link_libraries (sot_loader ${Boost_LIBRARIES} roscpp ros_bridge tf )
263
+ target_link_libraries (sot_loader dynamic-graph:: dynamic-graph )
264
+ target_link_libraries (sot_loader sot-core:: sot-core )
265
+ target_link_libraries (sot_loader ${Boost_LIBRARIES} )
191
266
install (TARGETS sot_loader DESTINATION lib )
192
267
193
268
add_subdirectory (src )
@@ -197,16 +272,18 @@ add_subdirectory(tests)
197
272
add_service_files ( FILES RunPythonFile.srv )
198
273
generate_messages ( DEPENDENCIES std_msgs )
199
274
200
-
201
- # This is necessary so that the pc file generated by catking is similar to the on
202
- # done directly by jrl-cmake-modules
203
- catkin_package (CATKIN_DEPENDS message_runtime roscpp realtime_tools tf2_bullet ${SOT_PKGNAMES} tf
275
+ # This is necessary so that the pc file generated by catking is similar to
276
+ # the on done directly by jrl-cmake-modules
277
+ catkin_package (INCLUDE_DIRS include
278
+ CATKIN_DEPENDS
279
+ message_runtime roscpp realtime_tools tf2_bullet ${SOT_PKGNAMES} tf
204
280
LIBRARIES ${CATKIN_DEPENDS_LIBRARIES}
205
281
)
206
282
207
283
# Add libraries in pc file generated by cmake submodule
208
284
PKG_CONFIG_APPEND_LIBS (ros_bridge sot_loader )
209
285
286
+ # In the python interface needs to be build.
210
287
IF (BUILD_PYTHON_INTERFACE )
211
288
PKG_CONFIG_APPEND_LIBS (ros_interpreter )
212
289
@@ -219,13 +296,24 @@ IF(BUILD_PYTHON_INTERFACE)
219
296
)
220
297
221
298
# Service file.
222
- install (FILES ./srv/RunPythonFile.srv DESTINATION ${CMAKE_INSTALL_PREFIX} /share/${PROJECT_NAME}/srv )
299
+ install (FILES ./srv/RunPythonFile.srv
300
+ DESTINATION
301
+ ${CMAKE_INSTALL_PREFIX} /share/${PROJECT_NAME}/srv )
223
302
224
303
ENDIF (BUILD_PYTHON_INTERFACE )
225
304
226
305
message (cmake_install_bindir " is ${CMAKE_INSTALL_BINDIR} " )
227
- install (TARGETS geometric_simu DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} )
228
- install (FILES manifest.xml DESTINATION ${CMAKE_INSTALL_PREFIX} /share/${PROJECT_NAME}/ )
306
+
307
+ # Install the geometrical simulation node
308
+ install (TARGETS geometric_simu
309
+ EXPORT ${TARGETS_EXPORT_NAME}
310
+ DESTINATION
311
+ ${CATKIN_PACKAGE_SHARE_DESTINATION} )
312
+
313
+ # Install package information
314
+ install (FILES manifest.xml
315
+ DESTINATION
316
+ ${CMAKE_INSTALL_PREFIX} /share/${PROJECT_NAME}/ )
229
317
230
318
231
- SETUP_PROJECT_FINALIZE ()
319
+ SETUP_PROJECT_PACKAGE_FINALIZE ()
0 commit comments