1
- CMAKE_MINIMUM_REQUIRED (VERSION 2.6 )
1
+ CMAKE_MINIMUM_REQUIRED (VERSION 3.1 )
2
2
3
- # Setup project properties
3
+ # Project properties
4
4
SET (PROJECT_ORG stack-of-tasks )
5
5
SET (PROJECT_NAME dynamic-graph )
6
6
SET (PROJECT_DESCRIPTION "Dynamic graph library" )
7
- SET (PROJECT_URL "http ://github.com/${PROJECT_ORG} /${PROJECT_NAME} " )
7
+ SET (PROJECT_URL "https ://github.com/${PROJECT_ORG} /${PROJECT_NAME} " )
8
8
SET (PROJECT_SUFFIX "-v3" )
9
9
10
- # Export CMake Target
11
- SET ( PROJECT_USE_CMAKE_EXPORT TRUE )
10
+ # Project options
11
+ OPTION ( SUFFIX_SO_VERSION "Suffix library name with its version" ON )
12
12
13
- # Make sure that every header is generated in dynamic-graph
13
+ # Project configuration
14
+ SET (PROJECT_USE_CMAKE_EXPORT TRUE )
14
15
SET (CUSTOM_HEADER_DIR ${PROJECT_NAME} )
15
-
16
- # Do not fail on warning
17
16
SET (CXX_DISABLE_WERROR TRUE )
17
+ SET (DOXYGEN_USE_MATHJAX YES )
18
+ SET (DYNAMIC_GRAPH_PLUGINDIR "${CMAKE_INSTALL_PREFIX} /lib/${PROJECT_NAME} -plugins" )
19
+ SET (PACKAGE_EXTRA_MACROS "set(DYNAMIC_GRAPH_PLUGINDIR ${DYNAMIC_GRAPH_PLUGINDIR} )" )
20
+ SET (PKG_CONFIG_EXTRA "plugindir=${DYNAMIC_GRAPH_PLUGINDIR} " )
21
+ SET (CMAKE_INSTALL_RPATH "${DYNAMIC_GRAPH_PLUGINDIR} " )
18
22
23
+ # JRL-cmakemodule setup
19
24
INCLUDE (cmake/base.cmake )
25
+ INCLUDE (cmake/boost.cmake )
20
26
21
- # Specify the project.
27
+ # Project definition
22
28
COMPUTE_PROJECT_ARGS (PROJECT_ARGS LANGUAGES CXX )
23
29
PROJECT (${PROJECT_NAME} ${PROJECT_ARGS} )
24
30
25
- # jrl-cmakemodules handling of usual modules
26
- INCLUDE (cmake/pthread.cmake )
27
- INCLUDE (cmake/boost.cmake )
31
+ INCLUDE (cmake/pthread.cmake ) # needs to be included after the CXX definition
28
32
29
- ADD_REQUIRED_DEPENDENCY (eigen3 )
33
+ # Project dependencies
34
+ ADD_PROJECT_DEPENDENCY (Eigen3 REQUIRED PKG_CONFIG_REQUIRES eigen3 )
30
35
SET (BOOST_COMPONENTS serialization system unit_test_framework thread )
31
36
SEARCH_FOR_BOOST ()
32
-
33
- # Allows math in mathjax.
34
- SET (DOXYGEN_USE_MATHJAX YES )
35
-
36
- # Defines paths.
37
- SET (LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR} /lib )
37
+ SEARCH_FOR_PTHREAD ()
38
38
39
39
# Add configuration headers for plug-ins.
40
40
GENERATE_CONFIGURATION_HEADER (
@@ -43,32 +43,63 @@ GENERATE_CONFIGURATION_HEADER(
43
43
${HEADER_DIR}
44
44
config-tracer-real-time.hh DG_TRACERREALTIME tracer_real_time_EXPORTS )
45
45
46
- set (PACKAGE_EXTRA_MACROS
47
- "set (DYNAMIC_GRAPH_PLUGINDIR \$ {CMAKE_CURRENT_LIST_DIR}/../../plugin)" )
48
-
49
- # Specific to PKG module
50
- # FIXME: to be changed into lib/dynamic-graph
51
- # to avoid name collision when installing dynamic-graph in /usr.
52
- SET (PLUGINDIR "${CMAKE_INSTALL_FULL_LIBDIR} /plugin" )
53
-
54
- # Add extra keys to pkg-config file to export the location of the
55
- # plug-in directory in a robust manner.
56
- SET (PKG_CONFIG_EXTRA "plugindir=${PLUGINDIR} " )
57
-
58
- # Add dependency toward dynamic graph library in pkg-config file.
59
- PKG_CONFIG_APPEND_LIBS (${PROJECT_NAME} )
60
-
61
- # Search for Boost.
62
- SEARCH_FOR_PTHREAD ()
63
-
64
-
65
- ####################################
66
- ### Main Library
67
- ####################################
68
46
# Verbosity level
69
- IF (NOT (\"${CMAKE_VERBOSITY_LEVEL} \" STREQUAL \"\" ))
47
+ IF (NOT (\"${CMAKE_VERBOSITY_LEVEL} \" STREQUAL \"\" ))
70
48
ADD_DEFINITIONS(-DVP_DEBUG_MODE=${CMAKE_VERBOSITY_LEVEL} -DVP_DEBUG)
71
- ENDIF (NOT (\" ${CMAKE_VERBOSITY_LEVEL} \" STREQUAL \"\" ))
49
+ ENDIF(NOT (\" ${CMAKE_VERBOSITY_LEVEL} \" STREQUAL \"\" ))
50
+
51
+ # Main Library
52
+ SET(${PROJECT_NAME} _HEADERS
53
+ include/${CUSTOM_HEADER_DIR} /fwd.hh
54
+ include/${CUSTOM_HEADER_DIR} /debug.h
55
+ include/${CUSTOM_HEADER_DIR} /real-time-logger.h
56
+ include/${CUSTOM_HEADER_DIR} /real-time-logger-def.h
57
+
58
+ include/${CUSTOM_HEADER_DIR} /dynamic-graph-api.h
59
+
60
+ include/${CUSTOM_HEADER_DIR} /entity.h
61
+ include/${CUSTOM_HEADER_DIR} /factory.h
62
+ include/${CUSTOM_HEADER_DIR} /pool.h
63
+
64
+ include/${CUSTOM_HEADER_DIR} /exception-abstract.h
65
+ include/${CUSTOM_HEADER_DIR} /exception-factory.h
66
+ include/${CUSTOM_HEADER_DIR} /exception-signal.h
67
+ include/${CUSTOM_HEADER_DIR} /exception-traces.h
68
+
69
+ include/${CUSTOM_HEADER_DIR} /signal.h
70
+ include/${CUSTOM_HEADER_DIR} /signal-array.h
71
+ include/${CUSTOM_HEADER_DIR} /signal-base.h
72
+ include/${CUSTOM_HEADER_DIR} /signal-ptr.h
73
+ include/${CUSTOM_HEADER_DIR} /signal-time-dependent.h
74
+ include/${CUSTOM_HEADER_DIR} /signal-ptr.t.cpp
75
+ include/${CUSTOM_HEADER_DIR} /signal.t.cpp
76
+ include/${CUSTOM_HEADER_DIR} /time-dependency.h
77
+ include/${CUSTOM_HEADER_DIR} /time-dependency.t.cpp
78
+ include/${CUSTOM_HEADER_DIR} /signal-caster.h
79
+ include/${CUSTOM_HEADER_DIR} /signal-cast-helper.h
80
+ include/${CUSTOM_HEADER_DIR} /all-signals.h
81
+ include/${CUSTOM_HEADER_DIR} /signal-helper.h
82
+ include/${CUSTOM_HEADER_DIR} /entity-helper.h
83
+
84
+ include/${CUSTOM_HEADER_DIR} /tracer.h
85
+ include/${CUSTOM_HEADER_DIR} /tracer-real-time.h
86
+
87
+ include/${CUSTOM_HEADER_DIR} /command.h
88
+ include/${CUSTOM_HEADER_DIR} /eigen-io.h
89
+ include/${CUSTOM_HEADER_DIR} /linear-algebra.h
90
+ include/${CUSTOM_HEADER_DIR} /value.h
91
+
92
+ include/${CUSTOM_HEADER_DIR} /command-setter.h
93
+ include/${CUSTOM_HEADER_DIR} /command-setter.t.cpp
94
+ include/${CUSTOM_HEADER_DIR} /command-getter.h
95
+ include/${CUSTOM_HEADER_DIR} /command-getter.t.cpp
96
+ include/${CUSTOM_HEADER_DIR} /command-direct-getter.h
97
+ include/${CUSTOM_HEADER_DIR} /command-direct-setter.h
98
+ include/${CUSTOM_HEADER_DIR} /command-bind.h
99
+ include/${CUSTOM_HEADER_DIR} /all-commands.h
100
+
101
+ include/${CUSTOM_HEADER_DIR} /logger.h
102
+ )
72
103
73
104
SET(${PROJECT_NAME} _SOURCES
74
105
src/debug/debug.cpp
@@ -94,134 +125,24 @@ SET(${PROJECT_NAME}_SOURCES
94
125
src/command/command.cpp
95
126
)
96
127
97
- SET(${PROJECT_NAME} _HEADERS
98
- include/dynamic-graph/fwd.hh
99
- include/dynamic-graph/debug.h
100
- include/dynamic-graph/real-time-logger.h
101
- include/dynamic-graph/real-time-logger-def.h
102
-
103
- include/dynamic-graph/dynamic-graph-api.h
104
-
105
- include/dynamic-graph/entity.h
106
- include/dynamic-graph/factory.h
107
- include/dynamic-graph/pool.h
108
-
109
- include/dynamic-graph/exception-abstract.h
110
- include/dynamic-graph/exception-factory.h
111
- include/dynamic-graph/exception-signal.h
112
- include/dynamic-graph/exception-traces.h
113
-
114
- include/dynamic-graph/signal.h
115
- include/dynamic-graph/signal-array.h
116
- include/dynamic-graph/signal-base.h
117
- include/dynamic-graph/signal-ptr.h
118
- include/dynamic-graph/signal-time-dependent.h
119
- include/dynamic-graph/signal-ptr.t.cpp
120
- include/dynamic-graph/signal.t.cpp
121
- include/dynamic-graph/time-dependency.h
122
- include/dynamic-graph/time-dependency.t.cpp
123
- include/dynamic-graph/signal-caster.h
124
- include/dynamic-graph/signal-cast-helper.h
125
- include/dynamic-graph/all-signals.h
126
- include/dynamic-graph/signal-helper.h
127
- include/dynamic-graph/entity-helper.h
128
-
129
- include/dynamic-graph/tracer.h
130
- include/dynamic-graph/tracer-real-time.h
131
-
132
- include/dynamic-graph/command.h
133
- include/dynamic-graph/eigen-io.h
134
- include/dynamic-graph/linear-algebra.h
135
- include/dynamic-graph/value.h
136
-
137
- include/dynamic-graph/command-setter.h
138
- include/dynamic-graph/command-setter.t.cpp
139
- include/dynamic-graph/command-getter.h
140
- include/dynamic-graph/command-getter.t.cpp
141
- include/dynamic-graph/command-direct-getter.h
142
- include/dynamic-graph/command-direct-setter.h
143
- include/dynamic-graph/command-bind.h
144
- include/dynamic-graph/all-commands.h
145
-
146
- include/dynamic-graph/logger.h
147
- )
148
-
149
- ADD_LIBRARY(${PROJECT_NAME}
150
- SHARED ${${PROJECT_NAME} _SOURCES} ${${PROJECT_NAME} _HEADERS})
151
-
152
- SET(PUBLIC_HEADER ${${PROJECT_NAME} _HEADERS})
153
-
154
- INSTALL(TARGETS ${PROJECT_NAME}
155
- EXPORT ${TARGETS_EXPORT_NAME}
156
- PUBLIC_HEADER
157
- INCLUDES DESTINATION include
158
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
159
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
160
- )
161
-
162
- # We need to include Eigen3 because the CMakeFile at 16.04 LTS
163
- # is not so modern.
164
- target_include_directories(${PROJECT_NAME}
165
- PUBLIC
166
- $<BUILD_INTERFACE:${CMAKE_BUILD_DIR} /include>
167
- $<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR} /include>
168
- $<BUILD_INTERFACE:${EIGEN3_INCLUDE_DIRS} >
169
- INTERFACE ${EIGEN3_INCLUDE_DIRS}
170
- $<INSTALL_INTERFACE:include>
171
- )
172
-
173
- OPTION(SUFFIX_SO_VERSION
174
- " Suffix shared library name by a string depending on git status of project "
175
- ON)
176
-
177
- IF (${SUFFIX_SO_VERSION} EQUAL " ON ")
178
- SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION} )
179
- ENDIF ()
180
-
181
- IF (UNIX)
182
- TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${CMAKE_DL_LIBS} pthread)
183
- ENDIF (UNIX)
184
-
128
+ ADD_LIBRARY(${PROJECT_NAME} SHARED
129
+ ${${PROJECT_NAME} _SOURCES} ${${PROJECT_NAME} _HEADERS})
130
+ TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME} SYSTEM PUBLIC ${EIGEN3_INCLUDE_DIR} )
131
+ TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME} PUBLIC $<INSTALL_INTERFACE:include>)
185
132
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${Boost_LIBRARIES} )
186
133
187
- ####################################
188
- ### Plugins
189
- ####################################
190
- SET(plugins_list
191
- src/traces/tracer
192
- src/traces/tracer-real-time
193
- )
194
-
195
- SET(tracer-real-time_dependency tracer)
196
-
197
- FOREACH(plugin_file ${plugins_list} )
198
- GET_FILENAME_COMPONENT(plugin ${plugin_file} NAME)
199
- ADD_LIBRARY(${plugin} SHARED " ${plugin_file} .cpp ")
200
-
201
- TARGET_LINK_LIBRARIES(${plugin}
202
- ${PROJECT_NAME} ${${plugin} _dependency}
203
- ${Boost_LIBRARIES} )
134
+ IF(UNIX)
135
+ TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${CMAKE_DL_LIBS} pthread)
136
+ ENDIF(UNIX)
204
137
205
- SET_TARGET_PROPERTIES(${plugin}
206
- PROPERTIES
207
- PREFIX ""
208
- )
138
+ IF(SUFFIX_SO_VERSION)
139
+ SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION} )
140
+ ENDIF(SUFFIX_SO_VERSION)
209
141
210
- INSTALL(TARGETS ${plugin}
211
- EXPORT ${TARGET_NAME}
212
- DESTINATION ${PLUGINDIR} )
213
- ENDFOREACH(plugin_file)
142
+ INSTALL(TARGETS ${PROJECT_NAME} EXPORT ${TARGETS_EXPORT_NAME} DESTINATION lib)
214
143
144
+ ADD_SUBDIRECTORY(src)
215
145
ADD_SUBDIRECTORY(tests)
216
146
217
- get_cmake_property(_variableNames VARIABLES)
218
- list (SORT _variableNames)
219
- foreach (_variableName ${_variableNames} )
220
- LIST(APPEND LOGGING_WATCHED_VARIABLES
221
- ${_variableName}
222
- )
223
- endforeach()
224
-
147
+ PKG_CONFIG_APPEND_LIBS(${PROJECT_NAME} )
225
148
INSTALL(FILES package.xml DESTINATION share/${PROJECT_NAME} )
226
-
227
- MESSAGE(STATUS " dynamic_graph_VERSION=${dynamic_graph_VERSION} ")
0 commit comments