|
1 | 1 | # |
2 | | -# Copyright 2010, 2018-2020 CNRS |
3 | | -# Authors: Florent Lamiraux, Guilhem Saurel |
| 2 | +# Copyright 2010, 2018-2020 CNRS Authors: Florent Lamiraux, Guilhem Saurel |
4 | 3 | # |
5 | 4 |
|
6 | | -CMAKE_MINIMUM_REQUIRED(VERSION 3.1) |
| 5 | +cmake_minimum_required(VERSION 3.1) |
7 | 6 |
|
8 | 7 | # Project properties |
9 | | -SET(PROJECT_ORG stack-of-tasks) |
10 | | -SET(PROJECT_NAME dynamic-graph-tutorial) |
11 | | -SET(PROJECT_DESCRIPTION "Tutorial for dynamic-graph") |
12 | | -SET(PROJECT_URL "https://github.com/${PROJECT_ORG}/${PROJECT_NAME}") |
| 8 | +set(PROJECT_ORG stack-of-tasks) |
| 9 | +set(PROJECT_NAME dynamic-graph-tutorial) |
| 10 | +set(PROJECT_DESCRIPTION "Tutorial for dynamic-graph") |
| 11 | +set(PROJECT_URL "https://github.com/${PROJECT_ORG}/${PROJECT_NAME}") |
13 | 12 |
|
14 | 13 | # 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) |
| 14 | +option(BUILD_PYTHON_INTERFACE "Build the python bindings" ON) |
| 15 | +option(INSTALL_PYTHON_INTERFACE_ONLY "Install *ONLY* the python bindings" OFF) |
| 16 | +option(SUFFIX_SO_VERSION "Suffix library name with its version" ON) |
18 | 17 |
|
19 | 18 | # 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") |
| 19 | +if(NOT INSTALL_PYTHON_INTERFACE_ONLY) |
| 20 | + set(PROJECT_USE_CMAKE_EXPORT TRUE) |
| 21 | +endif(NOT INSTALL_PYTHON_INTERFACE_ONLY) |
| 22 | +set(CUSTOM_HEADER_DIR "dynamic-graph/tutorial") |
24 | 23 |
|
25 | 24 | # JRL-cmakemodule setup |
26 | | -INCLUDE(cmake/base.cmake) |
27 | | -INCLUDE(cmake/boost.cmake) |
28 | | -INCLUDE(cmake/python.cmake) |
| 25 | +include(cmake/base.cmake) |
| 26 | +include(cmake/boost.cmake) |
29 | 27 |
|
30 | 28 | # Project definition |
31 | | -COMPUTE_PROJECT_ARGS(PROJECT_ARGS LANGUAGES CXX) |
32 | | -PROJECT(${PROJECT_NAME} ${PROJECT_ARGS}) |
| 29 | +compute_project_args(PROJECT_ARGS LANGUAGES CXX) |
| 30 | +project(${PROJECT_NAME} ${PROJECT_ARGS}) |
33 | 31 |
|
34 | 32 | # Project dependencies |
35 | | -ADD_PROJECT_DEPENDENCY(dynamic-graph REQUIRED) |
36 | | -IF(BUILD_TESTING) |
37 | | - FIND_PACKAGE(Boost REQUIRED COMPONENTS unit_test_framework) |
38 | | -ENDIF(BUILD_TESTING) |
39 | | - |
40 | | -IF(BUILD_PYTHON_INTERFACE) |
41 | | - FINDPYTHON() |
42 | | - ADD_PROJECT_DEPENDENCY(dynamic-graph-python 4.0.0 REQUIRED) |
43 | | - SEARCH_FOR_BOOST_PYTHON(REQUIRED) |
44 | | -ENDIF(BUILD_PYTHON_INTERFACE) |
45 | | - |
46 | | -IF(Boost_VERSION GREATER 107299 OR Boost_VERSION_MACRO GREATER 107299) |
| 33 | +add_project_dependency(dynamic-graph REQUIRED) |
| 34 | +if(BUILD_TESTING) |
| 35 | + find_package(Boost REQUIRED COMPONENTS unit_test_framework) |
| 36 | +endif(BUILD_TESTING) |
| 37 | + |
| 38 | +if(BUILD_PYTHON_INTERFACE) |
| 39 | + add_project_dependency(dynamic-graph-python 4.0.6 REQUIRED) |
| 40 | + include(cmake/python.cmake) # TODO: overwriting eigenpy/python.cmake |
| 41 | +endif(BUILD_PYTHON_INTERFACE) |
| 42 | + |
| 43 | +if(Boost_VERSION GREATER 107299 OR Boost_VERSION_MACRO GREATER 107299) |
47 | 44 | # Silence a warning about a deprecated use of boost bind by boost >= 1.73 |
48 | 45 | # without dropping support for boost < 1.73 |
49 | | - ADD_DEFINITIONS(-DBOOST_BIND_GLOBAL_PLACEHOLDERS) |
50 | | -ENDIF() |
| 46 | + add_definitions(-DBOOST_BIND_GLOBAL_PLACEHOLDERS) |
| 47 | +endif() |
51 | 48 |
|
52 | 49 | # Main Library |
53 | | -SET(${PROJECT_NAME}_HEADERS |
54 | | - include/${CUSTOM_HEADER_DIR}/inverted-pendulum.hh |
55 | | - include/${CUSTOM_HEADER_DIR}/feedback-controller.hh |
56 | | - ) |
57 | | - |
58 | | -SET(${PROJECT_NAME}_SOURCES |
59 | | - src/inverted-pendulum.cpp |
60 | | - src/feedback-controller.cpp |
61 | | - ) |
62 | | - |
63 | | -ADD_LIBRARY(${PROJECT_NAME} SHARED |
64 | | - ${${PROJECT_NAME}_SOURCES} ${${PROJECT_NAME}_HEADERS}) |
65 | | -TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME} PUBLIC $<INSTALL_INTERFACE:include>) |
66 | | -TARGET_LINK_LIBRARIES(${PROJECT_NAME} PUBLIC dynamic-graph::dynamic-graph) |
67 | | - |
68 | | -IF(SUFFIX_SO_VERSION) |
69 | | - SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION}) |
70 | | -ENDIF(SUFFIX_SO_VERSION) |
71 | | - |
72 | | -IF(NOT INSTALL_PYTHON_INTERFACE_ONLY) |
73 | | - INSTALL(TARGETS ${PROJECT_NAME} EXPORT ${TARGETS_EXPORT_NAME} DESTINATION lib) |
74 | | -ENDIF(NOT INSTALL_PYTHON_INTERFACE_ONLY) |
75 | | - |
76 | | -ADD_SUBDIRECTORY(src) |
77 | | -IF(BUILD_TESTING) |
78 | | - ADD_SUBDIRECTORY(tests) |
79 | | -ENDIF(BUILD_TESTING) |
80 | | - |
81 | | -IF(NOT INSTALL_PYTHON_INTERFACE_ONLY) |
82 | | - INSTALL(FILES package.xml DESTINATION share/${PROJECT_NAME}) |
83 | | -ENDIF(NOT INSTALL_PYTHON_INTERFACE_ONLY) |
| 50 | +set(${PROJECT_NAME}_HEADERS include/${CUSTOM_HEADER_DIR}/inverted-pendulum.hh |
| 51 | + include/${CUSTOM_HEADER_DIR}/feedback-controller.hh) |
| 52 | + |
| 53 | +set(${PROJECT_NAME}_SOURCES src/inverted-pendulum.cpp |
| 54 | + src/feedback-controller.cpp) |
| 55 | + |
| 56 | +add_library(${PROJECT_NAME} SHARED ${${PROJECT_NAME}_SOURCES} |
| 57 | + ${${PROJECT_NAME}_HEADERS}) |
| 58 | +target_include_directories(${PROJECT_NAME} PUBLIC $<INSTALL_INTERFACE:include>) |
| 59 | +target_link_libraries(${PROJECT_NAME} PUBLIC dynamic-graph::dynamic-graph) |
| 60 | + |
| 61 | +if(SUFFIX_SO_VERSION) |
| 62 | + set_target_properties(${PROJECT_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION}) |
| 63 | +endif(SUFFIX_SO_VERSION) |
| 64 | + |
| 65 | +if(NOT INSTALL_PYTHON_INTERFACE_ONLY) |
| 66 | + install( |
| 67 | + TARGETS ${PROJECT_NAME} |
| 68 | + EXPORT ${TARGETS_EXPORT_NAME} |
| 69 | + DESTINATION lib) |
| 70 | +endif(NOT INSTALL_PYTHON_INTERFACE_ONLY) |
| 71 | + |
| 72 | +add_subdirectory(src) |
| 73 | +if(BUILD_TESTING) |
| 74 | + add_subdirectory(tests) |
| 75 | +endif(BUILD_TESTING) |
| 76 | + |
| 77 | +if(NOT INSTALL_PYTHON_INTERFACE_ONLY) |
| 78 | + install(FILES package.xml DESTINATION share/${PROJECT_NAME}) |
| 79 | +endif(NOT INSTALL_PYTHON_INTERFACE_ONLY) |
0 commit comments