diff --git a/CMakeLists.txt b/CMakeLists.txt index 60012182a8715acb7eabce4b95d04a5595506367..277278f92baf84db7e4df8cb6e6e05798027ca4f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,58 +1,101 @@ -cmake_minimum_required(VERSION 2.8) +cmake_minimum_required(VERSION 3.1) +# Project properties SET(PROJECT_NAME hpp-bezier-com-traj) SET(PROJECT_DESCRIPTION "Multi contact trajectory generation for the COM using Bezier curves") +# Project options +OPTION(BUILD_PYTHON_INTERFACE "Build the python bindings" ON) +OPTION(USE_GLPK "Use sparse lp solver" OFF) +OPTION(PRINT_QHULL_INEQ "generate text file containing last inequality computed" OFF) + +# Project configuration +SET(PROJECT_USE_CMAKE_EXPORT TRUE) +SET(CUSTOM_HEADER_DIR "hpp/bezier-com-traj") +SET(CXX_DISABLE_WERROR TRUE) + +# JRL-cmakemodule setup INCLUDE(cmake/hpp.cmake) INCLUDE(cmake/boost.cmake) INCLUDE(cmake/python.cmake) -INCLUDE(cmake/test.cmake) - -SET(CUSTOM_HEADER_DIR "hpp/bezier-com-traj") +# Project definition COMPUTE_PROJECT_ARGS(PROJECT_ARGS LANGUAGES CXX) PROJECT(${PROJECT_NAME} ${PROJECT_ARGS}) -# Inhibit all warning messages. -#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w") - -# remove flag that makes all warnings into errors -string (REPLACE "-Werror" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) -MESSAGE( STATUS "CMAKE_CXX_FLAGS: " ${CMAKE_CXX_FLAGS} ) - -OPTION (BUILD_PYTHON_INTERFACE "Build the python binding" ON) -OPTION (USE_GLPK "Use sparse lp solver" OFF) -OPTION (PRINT_QHULL_INEQ "generate text file containing last inequality computed" OFF) - IF(BUILD_PYTHON_INTERFACE) - # search for python FINDPYTHON() - INCLUDE_DIRECTORIES(SYSTEM ${PYTHON_INCLUDE_DIRS} ) - + FIND_NUMPY() + STRING(REGEX REPLACE "-" "_" PY_NAME ${PROJECT_NAME}) + ADD_PROJECT_DEPENDENCY(eigenpy REQUIRED) SET(BOOST_COMPONENTS python) SEARCH_FOR_BOOST() - INCLUDE_DIRECTORIES(SYSTEM ${Boost_INCLUDE_DIR} ) ENDIF(BUILD_PYTHON_INTERFACE) -SET(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/find-external/CDD") +# Project dependencies -ADD_REQUIRED_DEPENDENCY(eigen3) -ADD_REQUIRED_DEPENDENCY(hpp-centroidal-dynamics) -ADD_REQUIRED_DEPENDENCY("curves >= 0.3") -FIND_PACKAGE(CDD REQUIRED) -INCLUDE_DIRECTORIES(${CDD_INCLUDE_DIRS}) +ADD_PROJECT_DEPENDENCY(hpp-centroidal-dynamics REQUIRED) +ADD_PROJECT_DEPENDENCY(curves REQUIRED) IF(USE_GLPK) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake/find-external/glpk") - find_package (glpk REQUIRED) + ADD_PROJECT_DEPENDENCY(glpk REQUIRED) add_definitions ( -DUSE_GLPK_SOLVER=1) - INCLUDE_DIRECTORIES(${glpk_INCLUDE_DIR}) ENDIF(USE_GLPK) +# Main Library +SET(${PROJECT_NAME}_HEADERS + include/${CUSTOM_HEADER_DIR}/data.hh + include/${CUSTOM_HEADER_DIR}/utils.hh + include/${CUSTOM_HEADER_DIR}/flags.hh + include/${CUSTOM_HEADER_DIR}/definitions.hh + include/${CUSTOM_HEADER_DIR}/local_config.hh + include/${CUSTOM_HEADER_DIR}/solve.hh + include/${CUSTOM_HEADER_DIR}/solve_end_effector.hh + include/${CUSTOM_HEADER_DIR}/common_solve_methods.hh + include/${CUSTOM_HEADER_DIR}/common_solve_methods.inl + include/${CUSTOM_HEADER_DIR}/cost/costfunction_definition.hh + include/${CUSTOM_HEADER_DIR}/waypoints/waypoints_definition.hh + include/${CUSTOM_HEADER_DIR}/waypoints/waypoints_c0_dc0_c1.hh + include/${CUSTOM_HEADER_DIR}/waypoints/waypoints_c0_dc0_dc1.hh + include/${CUSTOM_HEADER_DIR}/waypoints/waypoints_c0_dc0_dc1_c1.hh + include/${CUSTOM_HEADER_DIR}/waypoints/waypoints_c0_dc0_ddc0_c1.hh + include/${CUSTOM_HEADER_DIR}/waypoints/waypoints_c0_dc0_ddc0_dc1_c1.hh + include/${CUSTOM_HEADER_DIR}/waypoints/waypoints_c0_dc0_ddc0_ddc1_dc1_c1.hh + include/${CUSTOM_HEADER_DIR}/solver/solver-abstract.hpp + include/${CUSTOM_HEADER_DIR}/solver/eiquadprog-fast.hpp # TODO: use stack-of-task/eiquadprog + ) + +SET(${PROJECT_NAME}_SOURCES + src/common_solve_methods.cpp + src/costfunction_definition.cpp + src/solver-abstract.cpp + src/eiquadprog-fast.cpp + src/computeCOMTraj.cpp + src/solve_0_step.cpp + src/utils.cpp + src/waypoints_definition.cpp + ) + +if(USE_GLPK) + SET(${PROJECT_NAME}_SOURCES ${${PROJECT_NAME}_SOURCES} + glpk-wrapper.cpp + ) +endif(USE_GLPK) + +ADD_LIBRARY(${PROJECT_NAME} SHARED + ${${PROJECT_NAME}_SOURCES} ${${PROJECT_NAME}_HEADERS}) +TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME} PUBLIC $<INSTALL_INTERFACE:include>) +TARGET_LINK_LIBRARIES(${PROJECT_NAME} curves::curves hpp-centroidal-dynamics::hpp-centroidal-dynamics) + +if(USE_GLPK) + TARGET_INCLUDE_DIRECTORIES(${PROJECT_NAME} ${glpk_INCLUDE_DIR}) + TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${glpk_LIBRARY}) +endif(USE_GLPK) + +INSTALL(TARGETS ${PROJECT_NAME} EXPORT ${TARGETS_EXPORT_NAME} DESTINATION lib) -add_subdirectory(include/${CUSTOM_HEADER_DIR}) -add_subdirectory(src) -add_subdirectory(tests) +ADD_SUBDIRECTORY(tests) IF(BUILD_PYTHON_INTERFACE) - add_subdirectory (python) + ADD_SUBDIRECTORY(python) ENDIF(BUILD_PYTHON_INTERFACE) diff --git a/cmake b/cmake index 7eca9ee6c9d1c4ee20eb82272e94f9d11642053a..7ab756beff8729739c45731dfc1edb6f88d2dbc8 160000 --- a/cmake +++ b/cmake @@ -1 +1 @@ -Subproject commit 7eca9ee6c9d1c4ee20eb82272e94f9d11642053a +Subproject commit 7ab756beff8729739c45731dfc1edb6f88d2dbc8 diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt index 52bc5949c7cf7271953f078d8ad47e459fdb0a08..8697388a60d06662d30e79967ce509cc55040694 100644 --- a/python/CMakeLists.txt +++ b/python/CMakeLists.txt @@ -1,25 +1,15 @@ -ADD_REQUIRED_DEPENDENCY("eigenpy") - -STRING(REGEX REPLACE "-" "_" PY_NAME ${PROJECT_NAME}) - # Define the wrapper library that wraps our library -add_library( ${PY_NAME} SHARED bezier_com_traj.cpp ) -target_link_libraries( ${PY_NAME} ${Boost_LIBRARIES} ${PROJECT_NAME} ) +add_library(${PY_NAME} SHARED bezier_com_traj.cpp ) +target_link_libraries(${PY_NAME} ${Boost_LIBRARIES} ${PROJECT_NAME} eigenpy::eigenpy) # don't prepend wrapper library name with lib -set_target_properties( ${PY_NAME} PROPERTIES PREFIX "" ) +set_target_properties(${PY_NAME} PROPERTIES PREFIX "") IF(APPLE) # We need to change the extension for python bindings SET_TARGET_PROPERTIES(${PY_NAME} PROPERTIES SUFFIX ".so") ENDIF(APPLE) -PKG_CONFIG_USE_DEPENDENCY(${PY_NAME} eigenpy) -PKG_CONFIG_USE_DEPENDENCY(${PY_NAME} hpp-centroidal-dynamics) -PKG_CONFIG_USE_DEPENDENCY(${PY_NAME} curves) -TARGET_LINK_LIBRARIES(${PY_NAME} hpp-centroidal-dynamics) -INSTALL( - TARGETS ${PY_NAME} DESTINATION ${PYTHON_SITELIB} - ) +INSTALL(TARGETS ${PY_NAME} DESTINATION ${PYTHON_SITELIB}) SET(${PROJECT_NAME}_PYTHON_TESTS binding_tests.py @@ -27,5 +17,5 @@ SET(${PROJECT_NAME}_PYTHON_TESTS ) FOREACH(test ${${PROJECT_NAME}_PYTHON_TESTS}) - ADD_PYTHON_UNIT_TEST(${test} "python/test/${test}" "python") + ADD_PYTHON_UNIT_TEST(${test} "python/test/${test}" "python") ENDFOREACH(test) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 8c7460f983da629bf50b51958dfcb6153164b572..8fe037cfd444d60147c87cf346bd918ff2d1c573 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -7,8 +7,5 @@ SET(${PROJECT_NAME}_TESTS FOREACH(test ${${PROJECT_NAME}_TESTS}) ADD_UNIT_TEST("${test}" "test-${test}") - PKG_CONFIG_USE_DEPENDENCY(${test} hpp-centroidal-dynamics) - PKG_CONFIG_USE_DEPENDENCY(${test} curves) - PKG_CONFIG_USE_DEPENDENCY(${test} eigen3) - TARGET_LINK_LIBRARIES(${test} ${Boost_LIBRARIES} ${PROJECT_NAME} hpp-centroidal-dynamics) + TARGET_LINK_LIBRARIES(${test} ${Boost_LIBRARIES} ${PROJECT_NAME}) ENDFOREACH(test)