Skip to content

Commit fb5d10a

Browse files
olivier-stasseOlivier Stasse
authored andcommitted
[cmake] Fix CMake package
1 parent cdafa12 commit fb5d10a

File tree

4 files changed

+193
-17
lines changed

4 files changed

+193
-17
lines changed

CMakeLists.txt

Lines changed: 174 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,18 @@ SET(PROJECT_DESCRIPTION "Dynamic graph library")
99
SET(PROJECT_URL "http://github.com/${PROJECT_ORG}/${PROJECT_NAME}")
1010
SET(PROJECT_SUFFIX "-v3")
1111

12+
# Export CMake Target
13+
SET(PROJECT_USE_CMAKE_EXPORT TRUE)
14+
# Make sure that every header is generated in dynamic-graph
15+
SET(CUSTOM_HEADER_DIR ${PROJECT_NAME})
16+
1217
INCLUDE(cmake/base.cmake)
1318
PROJECT(${PROJECT_NAME} CXX)
1419

20+
INCLUDE(cmake/header.cmake)
1521
INCLUDE(cmake/boost.cmake)
16-
INCLUDE(cmake/eigen.cmake)
1722
INCLUDE(cmake/pthread.cmake)
18-
19-
# Export CMake Target
20-
SET(PROJECT_USE_CMAKE_EXPORT TRUE)
23+
add_project_dependency(Eigen3 REQUIRED NO_MODULE)
2124

2225
SET(CUSTOM_HEADER_DIR "${PROJECT_NAME}")
2326

@@ -33,6 +36,10 @@ GENERATE_CONFIGURATION_HEADER(
3336
${HEADER_DIR}
3437
config-tracer-real-time.hh DG_TRACERREALTIME tracer_real_time_EXPORTS)
3538

39+
set(PACKAGE_EXTRA_MACROS
40+
"set (DYNAMIC_GRAPH_PLUGINDIR \${CMAKE_CURRENT_LIST_DIR}/../../plugin)")
41+
42+
# Specific to PKG module
3643
# FIXME: to be changed into lib/dynamic-graph
3744
# to avoid name collision when installing dynamic-graph in /usr.
3845
SET(PLUGINDIR "${CMAKE_INSTALL_FULL_LIBDIR}/plugin")
@@ -48,13 +55,172 @@ PKG_CONFIG_APPEND_LIBS(${PROJECT_NAME})
4855
SET(BOOST_COMPONENTS serialization system unit_test_framework thread)
4956
SEARCH_FOR_BOOST()
5057
SEARCH_FOR_PTHREAD()
58+
#SEARCH_FOR_EIGEN()
5159

52-
# Search for Boost.
53-
SEARCH_FOR_EIGEN()
60+
# Copyright 2010, Olivier Stasse, JRL, CNRS/AIST
61+
#
62+
63+
####################################
64+
### Main Library
65+
####################################
66+
SET(LIBRARY_NAME ${PROJECT_NAME})
67+
68+
# Verbosity level
69+
IF (NOT (\"${CMAKE_VERBOSITY_LEVEL}\" STREQUAL \"\"))
70+
ADD_DEFINITIONS(-DVP_DEBUG_MODE=${CMAKE_VERBOSITY_LEVEL} -DVP_DEBUG)
71+
ENDIF (NOT (\"${CMAKE_VERBOSITY_LEVEL}\" STREQUAL \"\"))
72+
73+
# Declare boost include directories
74+
#include_directories(${Boost_INCLUDE_DIRS})
75+
#link_directories(${Boost_LIBRARY_DIRS})
76+
77+
ADD_LIBRARY(${LIBRARY_NAME}
78+
SHARED
79+
src/debug/debug.cpp
80+
src/debug/real-time-logger.cpp
81+
src/debug/logger.cpp
82+
83+
src/dgraph/entity.cpp
84+
src/dgraph/factory.cpp
85+
src/dgraph/pool.cpp
86+
87+
src/exception/exception-abstract.cpp
88+
src/exception/exception-factory.cpp
89+
src/exception/exception-signal.cpp
90+
src/exception/exception-traces.cpp
91+
92+
src/mt/process-list.cpp
93+
94+
src/signal/signal-array.cpp
95+
src/signal/signal-caster.cpp
96+
src/signal/signal-cast-helper.cpp
97+
98+
src/command/value.cpp
99+
src/command/command.cpp
100+
101+
)
102+
103+
SET(${PROJECT_NAME}_HEADERS
104+
include/dynamic-graph/fwd.hh
105+
include/dynamic-graph/null-ptr.hh
106+
include/dynamic-graph/debug.h
107+
include/dynamic-graph/real-time-logger.h
108+
109+
include/dynamic-graph/dynamic-graph-api.h
110+
111+
include/dynamic-graph/entity.h
112+
include/dynamic-graph/factory.h
113+
include/dynamic-graph/pool.h
114+
115+
include/dynamic-graph/exception-abstract.h
116+
include/dynamic-graph/exception-factory.h
117+
include/dynamic-graph/exception-signal.h
118+
include/dynamic-graph/exception-traces.h
119+
120+
include/dynamic-graph/signal.h
121+
include/dynamic-graph/signal-array.h
122+
include/dynamic-graph/signal-base.h
123+
include/dynamic-graph/signal-ptr.h
124+
include/dynamic-graph/signal-time-dependent.h
125+
include/dynamic-graph/signal-ptr.t.cpp
126+
include/dynamic-graph/signal.t.cpp
127+
include/dynamic-graph/time-dependency.h
128+
include/dynamic-graph/time-dependency.t.cpp
129+
include/dynamic-graph/signal-caster.h
130+
include/dynamic-graph/signal-cast-helper.h
131+
include/dynamic-graph/all-signals.h
132+
include/dynamic-graph/signal-helper.h
133+
include/dynamic-graph/entity-helper.h
134+
135+
include/dynamic-graph/tracer.h
136+
include/dynamic-graph/tracer-real-time.h
137+
138+
include/dynamic-graph/command.h
139+
include/dynamic-graph/eigen-io.h
140+
include/dynamic-graph/linear-algebra.h
141+
include/dynamic-graph/value.h
142+
143+
include/dynamic-graph/command-setter.h
144+
include/dynamic-graph/command-setter.t.cpp
145+
include/dynamic-graph/command-getter.h
146+
include/dynamic-graph/command-getter.t.cpp
147+
include/dynamic-graph/command-direct-getter.h
148+
include/dynamic-graph/command-direct-setter.h
149+
include/dynamic-graph/command-bind.h
150+
include/dynamic-graph/all-commands.h
151+
152+
include/dynamic-graph/logger.h
153+
)
154+
155+
SET(PUBLIC_HEADER ${${PROJECT_NAME}_HEADERS})
156+
157+
INSTALL(TARGETS ${PROJECT_NAME}
158+
EXPORT ${TARGETS_EXPORT_NAME}
159+
PUBLIC_HEADER
160+
INCLUDES DESTINATION include
161+
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
162+
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
163+
)
164+
165+
# We need to include Eigen3 because the CMakeFile at 16.04 LTS
166+
# is not so modern.
167+
target_include_directories(${PROJECT_NAME}
168+
PUBLIC
169+
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>
170+
$<BUILD_INTERFACE:${EIGEN3_INCLUDE_DIR}>
171+
INTERFACE
172+
${EIGEN3_INCLUDE_DIR}
173+
$<INSTALL_INTERFACE:include>
174+
)
175+
176+
SET_TARGET_PROPERTIES(${LIBRARY_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION})
177+
178+
179+
IF (UNIX)
180+
TARGET_LINK_LIBRARIES(${LIBRARY_NAME} ${CMAKE_DL_LIBS} pthread)
181+
ENDIF (UNIX)
182+
183+
TARGET_LINK_LIBRARIES(${LIBRARY_NAME} ${Boost_LIBRARIES})
184+
185+
#IF (UNIX AND NOT APPLE)
186+
# TARGET_LINK_LIBRARIES(${LIBRARY_NAME} ${JRL_MAL_LDFLAGS_OTHER})
187+
#ENDIF (UNIX AND NOT APPLE)
188+
189+
####################################
190+
### Plugins
191+
####################################
192+
SET(plugins_list
193+
src/traces/tracer
194+
src/traces/tracer-real-time
195+
)
196+
197+
SET(tracer-real-time_dependency tracer)
198+
199+
FOREACH(plugin_file ${plugins_list})
200+
GET_FILENAME_COMPONENT(plugin ${plugin_file} NAME)
201+
ADD_LIBRARY(${plugin} SHARED "${plugin_file}.cpp")
202+
203+
TARGET_LINK_LIBRARIES(${plugin}
204+
${PROJECT_NAME} ${${plugin}_dependency}
205+
${Boost_LIBRARIES})
206+
207+
SET_TARGET_PROPERTIES(${plugin}
208+
PROPERTIES
209+
PREFIX ""
210+
)
211+
212+
INSTALL(TARGETS ${plugin} EXPORT ${TARGET_NAME} DESTINATION ${PLUGINDIR})
213+
ENDFOREACH(plugin_file)
54214
55-
ADD_SUBDIRECTORY(src)
56215
ADD_SUBDIRECTORY(include/${PROJECT_NAME})
57216
ADD_SUBDIRECTORY(tests)
58217
59-
SETUP_PROJECT_FINALIZE()
218+
219+
#SETUP_PROJECT_FINALIZE()
60220
SETUP_PROJECT_PACKAGE_FINALIZE()
221+
222+
get_cmake_property(_variableNames VARIABLES)
223+
list (SORT _variableNames)
224+
foreach (_variableName ${_variableNames})
225+
message(STATUS "${_variableName}=${${_variableName}}")
226+
endforeach()

include/dynamic-graph/CMakeLists.txt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,6 @@ SET(${PROJECT_NAME}_HEADERS
4848
all-commands.h
4949

5050
logger.h
51-
)
51+
)
5252

53-
INSTALL(FILES ${${PROJECT_NAME}_HEADERS}
54-
DESTINATION include/${PROJECT_NAME}
55-
)
53+
SET(PUBLIC_HEADER ${${PROJECT_NAME}_HEADERS})

src/CMakeLists.txt

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ IF (NOT (\"${CMAKE_VERBOSITY_LEVEL}\" STREQUAL \"\"))
1212
ENDIF (NOT (\"${CMAKE_VERBOSITY_LEVEL}\" STREQUAL \"\"))
1313
1414
# Declare boost include directories
15-
include_directories(${Boost_INCLUDE_DIRS})
16-
link_directories(${Boost_LIBRARY_DIRS})
15+
#include_directories(${Boost_INCLUDE_DIRS})
16+
#link_directories(${Boost_LIBRARY_DIRS})
1717
1818
ADD_LIBRARY(${LIBRARY_NAME}
1919
SHARED
@@ -40,6 +40,18 @@ ADD_LIBRARY(${LIBRARY_NAME}
4040
command/command.cpp
4141
)
4242
43+
INSTALL(TARGETS ${PROJECT_NAME}
44+
EXPORT ${TARGETS_EXPORT_NAME}
45+
PUBLIC_HEADER
46+
INCLUDES DESTINATION include/${PROJECT_NAME}
47+
)
48+
49+
target_include_directories(${PROJECT_NAME}
50+
PUBLIC
51+
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
52+
$<INSTALL_INTERFACE:include>
53+
)
54+
4355
SET_TARGET_PROPERTIES(${LIBRARY_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION})
4456
4557
@@ -48,7 +60,7 @@ IF (UNIX)
4860
ENDIF (UNIX)
4961
5062
TARGET_LINK_LIBRARIES(${LIBRARY_NAME} ${Boost_LIBRARIES})
51-
63+
TARGET_LINK_LIBRARIES(${LIBRARY_NAME} Eigen3::Eigen)
5264
#IF (UNIX AND NOT APPLE)
5365
# TARGET_LINK_LIBRARIES(${LIBRARY_NAME} ${JRL_MAL_LDFLAGS_OTHER})
5466
#ENDIF (UNIX AND NOT APPLE)

tests/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
ADD_DEFINITIONS(-DDEBUG=2)
55

66
# Add Boost path to include directories.
7-
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
7+
#INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
88

99
# Make Boost.Test generates the main function in test cases.
1010
ADD_DEFINITIONS(-DBOOST_TEST_DYN_LINK -DBOOST_TEST_MAIN)
@@ -64,4 +64,4 @@ DYNAMIC_GRAPH_TEST(debug-logger-winit)
6464
DYNAMIC_GRAPH_TEST(signal-all)
6565
DYNAMIC_GRAPH_TEST(command-test)
6666
DYNAMIC_GRAPH_TEST(test-mt)
67-
TARGET_LINK_LIBRARIES(test-mt tracer)
67+
TARGET_LINK_LIBRARIES(test-mt tracer)

0 commit comments

Comments
 (0)