|
5 | 5 |
|
6 | 6 | CMAKE_MINIMUM_REQUIRED(VERSION 3.1) |
7 | 7 |
|
8 | | -SET(PROJECT_NAMESPACE stack-of-tasks) |
| 8 | +# Project properties |
| 9 | +SET(PROJECT_ORG stack-of-tasks) |
9 | 10 | SET(PROJECT_NAME dynamic-graph-tutorial) |
10 | 11 | SET(PROJECT_DESCRIPTION "Tutorial for dynamic-graph") |
11 | | -SET(PROJECT_URL "http://github.com/${PROJECT_NAME}/${PROJECT_NAME}") |
| 12 | +SET(PROJECT_URL "https://github.com/${PROJECT_ORG}/${PROJECT_NAME}") |
12 | 13 |
|
| 14 | +# Project options |
| 15 | +OPTION(BUILD_PYTHON_INTERFACE "Build the python bindings" ON) |
| 16 | +OPTION(INSTALL_PYTHON_INTERFACE_ONLY "Install *ONLY* the python bindings" OFF) |
| 17 | +OPTION(SUFFIX_SO_VERSION "Suffix library name with its version" ON) |
| 18 | + |
| 19 | +# Project configuration |
| 20 | +IF(NOT INSTALL_PYTHON_INTERFACE_ONLY) |
| 21 | + SET(PROJECT_USE_CMAKE_EXPORT TRUE) |
| 22 | +ENDIF(NOT INSTALL_PYTHON_INTERFACE_ONLY) |
| 23 | +SET(CUSTOM_HEADER_DIR "dynamic-graph/tutorial") |
| 24 | + |
| 25 | +# JRL-cmakemodule setup |
13 | 26 | INCLUDE(cmake/base.cmake) |
14 | 27 | INCLUDE(cmake/boost.cmake) |
15 | | -INCLUDE(cmake/test.cmake) |
16 | 28 | INCLUDE(cmake/python.cmake) |
17 | 29 | INCLUDE(cmake/sphinx.cmake) |
18 | 30 |
|
19 | | -OPTION (BUILD_PYTHON_INTERFACE "Build the python binding" ON) |
20 | | -OPTION (INSTALL_PYTHON_INTERFACE_ONLY "Install *ONLY* the python binding" OFF) |
21 | | -SET (CUSTOM_HEADER_DIR "dynamic-graph/tutorial") |
22 | | - |
| 31 | +# Project definition |
23 | 32 | COMPUTE_PROJECT_ARGS(PROJECT_ARGS LANGUAGES CXX) |
24 | 33 | PROJECT(${PROJECT_NAME} ${PROJECT_ARGS}) |
25 | 34 |
|
| 35 | +# Project dependencies |
26 | 36 | ADD_PROJECT_DEPENDENCY(dynamic-graph REQUIRED PKG_CONFIG_REQUIRES dynamic-graph) |
27 | | - |
28 | 37 | SET(BOOST_COMPONENTS unit_test_framework) |
29 | 38 |
|
30 | 39 | IF(BUILD_PYTHON_INTERFACE) |
31 | | - ADD_PROJECT_DEPENDENCY(dynamic-graph-python REQUIRED PKG_CONFIG_REQUIRES dynamic-graph-python) |
32 | 40 | FINDPYTHON() |
33 | | - STRING(REGEX REPLACE "-" "_" PY_NAME ${PROJECT_NAME}) |
| 41 | + ADD_PROJECT_DEPENDENCY(dynamic-graph-python REQUIRED |
| 42 | + PKG_CONFIG_REQUIRES dynamic-graph-python) |
34 | 43 | SET(BOOST_COMPONENTS ${BOOST_COMPONENTS} python) |
35 | | - INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_DIRS}) |
36 | 44 | ENDIF(BUILD_PYTHON_INTERFACE) |
37 | 45 |
|
38 | 46 | SEARCH_FOR_BOOST() |
39 | | -INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS}) |
40 | 47 |
|
41 | | -ADD_SUBDIRECTORY(include/${CUSTOM_HEADER_DIR}) |
| 48 | +# Main Library |
| 49 | +SET(${PROJECT_NAME}_HEADERS |
| 50 | + include/${CUSTOM_HEADER_DIR}/inverted-pendulum.hh |
| 51 | + include/${CUSTOM_HEADER_DIR}/feedback-controller.hh |
| 52 | + ) |
| 53 | + |
| 54 | +SET(${PROJECT_NAME}_SOURCES |
| 55 | + src/inverted-pendulum |
| 56 | + src/feedback-controller |
| 57 | + ) |
| 58 | + |
| 59 | +ADD_LIBRARY(${PROJECT_NAME} SHARED |
| 60 | + ${${PROJECT_NAME}_SOURCES} ${${PROJECT_NAME}_HEADERS}) |
| 61 | +TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME} PUBLIC $<INSTALL_INTERFACE:include>) |
| 62 | +TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${Boost_LIBRARIES} |
| 63 | + dynamic-graph::dynamic-graph) |
| 64 | + |
| 65 | +IF(SUFFIX_SO_VERSION) |
| 66 | + SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION}) |
| 67 | +ENDIF(SUFFIX_SO_VERSION) |
| 68 | + |
| 69 | +#IF(BUILD_PYTHON_INTERFACE) # TODO |
| 70 | + #TARGET_LINK_LIBRARIES(${PROJECT_NAME} dynamic-graph-python::dynamic-graph-python) |
| 71 | +#ENDIF(BUILD_PYTHON_INTERFACE) |
| 72 | + |
| 73 | +IF(NOT INSTALL_PYTHON_INTERFACE_ONLY) |
| 74 | + INSTALL(TARGETS ${PROJECT_NAME} EXPORT ${TARGETS_EXPORT_NAME} DESTINATION lib) |
| 75 | +ENDIF(NOT INSTALL_PYTHON_INTERFACE_ONLY) |
| 76 | + |
42 | 77 | ADD_SUBDIRECTORY(src) |
43 | | -ADD_SUBDIRECTORY(doc) |
44 | 78 | ADD_SUBDIRECTORY(tests) |
| 79 | +ADD_SUBDIRECTORY(doc) |
| 80 | + |
| 81 | +#INSTALL(FILES package.xml DESTINATION share/${PROJECT_NAME}) # TODO |
0 commit comments