11CMAKE_MINIMUM_REQUIRED (VERSION 3.1)
22
3- # Setup project properties
3+ # Project properties
44SET (PROJECT_ORG stack-of-tasks)
55SET (PROJECT_NAME dynamic-graph)
66SET (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} " )
88SET (PROJECT_SUFFIX "-v3" )
99
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 )
1212
13- # Make sure that every header is generated in dynamic-graph
13+ # Project configuration
14+ SET (PROJECT_USE_CMAKE_EXPORT TRUE )
1415SET (CUSTOM_HEADER_DIR ${PROJECT_NAME} )
15-
16- # Do not fail on warning
1716SET (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} " )
1822
23+ # JRL-cmakemodule setup
1924INCLUDE (cmake/base.cmake)
25+ INCLUDE (cmake/boost.cmake)
2026
21- # Specify the project.
27+ # Project definition
2228COMPUTE_PROJECT_ARGS(PROJECT_ARGS LANGUAGES CXX)
2329PROJECT (${PROJECT_NAME} ${PROJECT_ARGS} )
2430
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
2832
33+ # Project dependencies
2934ADD_PROJECT_DEPENDENCY(Eigen3 REQUIRED PKG_CONFIG_REQUIRES eigen3)
3035SET (BOOST_COMPONENTS serialization system unit_test_framework thread)
3136SEARCH_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()
3838
3939# Add configuration headers for plug-ins.
4040GENERATE_CONFIGURATION_HEADER(
@@ -43,32 +43,63 @@ GENERATE_CONFIGURATION_HEADER(
4343 ${HEADER_DIR}
4444 config-tracer-real-time.hh DG_TRACERREALTIME tracer_real_time_EXPORTS)
4545
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- ####################################
6846# Verbosity level
69- IF (NOT (\"${CMAKE_VERBOSITY_LEVEL} \" STREQUAL \"\"))
47+ IF (NOT (\"${CMAKE_VERBOSITY_LEVEL} \" STREQUAL \"\"))
7048 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+ )
72103
73104SET (${PROJECT_NAME} _SOURCES
74105 src/debug/debug.cpp
@@ -94,134 +125,24 @@ SET(${PROJECT_NAME}_SOURCES
94125 src/command /command .cpp
95126 )
96127
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)
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 >)
185132TARGET_LINK_LIBRARIES (${PROJECT_NAME} ${Boost_LIBRARIES} )
186133
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 )
204137
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)
209141
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)
214143
144+ ADD_SUBDIRECTORY (src)
215145ADD_SUBDIRECTORY (tests)
216146
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} )
225148INSTALL (FILES package.xml DESTINATION share/${PROJECT_NAME} )
226-
227- MESSAGE (STATUS "dynamic_graph_VERSION=${dynamic_graph_VERSION} " )
0 commit comments