Skip to content
Snippets Groups Projects
Commit 1d3775f6 authored by Guilhem Saurel's avatar Guilhem Saurel
Browse files

[CMake] Exports

parent 72b8d886
No related branches found
No related tags found
No related merge requests found
# #
# Copyright (c) 2014 CNRS # Copyright (c) 2014, 2020 CNRS
# Authors: Florent Lamiraux # Authors: Florent Lamiraux, Guilhem Saurel
# #
# #
# This file is part of hpp-manipulation # This file is part of hpp-manipulation
...@@ -17,12 +17,14 @@ ...@@ -17,12 +17,14 @@
# hpp-manipulation If not, see # hpp-manipulation If not, see
# <http://www.gnu.org/licenses/>. # <http://www.gnu.org/licenses/>.
CMAKE_MINIMUM_REQUIRED(VERSION 2.8) CMAKE_MINIMUM_REQUIRED(VERSION 3.1)
SET(PROJECT_NAME hpp-manipulation) SET(PROJECT_NAME hpp-manipulation)
SET(PROJECT_DESCRIPTION "Classes for manipulation planning.") SET(PROJECT_DESCRIPTION "Classes for manipulation planning.")
SET(PROJECT_USE_CMAKE_EXPORT TRUE)
SET(CXX_DISABLE_WERROR TRUE) SET(CXX_DISABLE_WERROR TRUE)
INCLUDE(cmake/hpp.cmake) INCLUDE(cmake/hpp.cmake)
INCLUDE(cmake/boost.cmake) INCLUDE(cmake/boost.cmake)
...@@ -32,7 +34,7 @@ PROJECT(${PROJECT_NAME} ${PROJECT_ARGS}) ...@@ -32,7 +34,7 @@ PROJECT(${PROJECT_NAME} ${PROJECT_ARGS})
LIST(APPEND PKG_CONFIG_ADDITIONAL_VARIABLES cmake_plugin) LIST(APPEND PKG_CONFIG_ADDITIONAL_VARIABLES cmake_plugin)
# Activate test using UR5 if requested # Activate test using UR5 if requested
SET (TEST_UR5 FALSE CACHE BOOL "Activate tests using ur5") SET(TEST_UR5 FALSE CACHE BOOL "Activate tests using ur5")
# Ask Doxygen to create a tree view in html documentation # Ask Doxygen to create a tree view in html documentation
SET(DOXYGEN_TREEVIEW "NO" CACHE STRING "Set to YES to generate a tree view in the html documentation") SET(DOXYGEN_TREEVIEW "NO" CACHE STRING "Set to YES to generate a tree view in the html documentation")
...@@ -40,27 +42,21 @@ SET(DOXYGEN_TREEVIEW "NO" CACHE STRING "Set to YES to generate a tree view in th ...@@ -40,27 +42,21 @@ SET(DOXYGEN_TREEVIEW "NO" CACHE STRING "Set to YES to generate a tree view in th
SET(HPP_MANIPULATION_HAS_WHOLEBODY_STEP TRUE SET(HPP_MANIPULATION_HAS_WHOLEBODY_STEP TRUE
CACHE BOOL "Compile with dependency to hpp-wholebody-step") CACHE BOOL "Compile with dependency to hpp-wholebody-step")
SET(BOOST_BUILD_COMPONENTS unit_test_framework) SET(BOOST_COMPONENTS unit_test_framework regex)
SET(BOOST_INSTALL_COMPONENTS regex)
SET(BOOST_COMPONENTS ${BOOST_INSTALL_COMPONENTS} ${BOOST_BUILD_COMPONENTS})
SEARCH_FOR_BOOST() SEARCH_FOR_BOOST()
ADD_DOC_DEPENDENCY("hpp-pinocchio >= 4") ADD_PROJECT_DEPENDENCY("hpp-core" REQUIRED)
ADD_DOC_DEPENDENCY("hpp-fcl >= 0.4.3") IF(HPP_MANIPULATION_HAS_WHOLEBODY_STEP)
ADD_REQUIRED_DEPENDENCY("hpp-core >= 4") ADD_PROJECT_DEPENDENCY("hpp-wholebody-step" REQUIRED)
ADD_REQUIRED_DEPENDENCY("hpp-constraints >= 4") ENDIF()
ADD_REQUIRED_DEPENDENCY("hpp-statistics >= 1.1") IF(TEST_UR5)
IF (HPP_MANIPULATION_HAS_WHOLEBODY_STEP)
ADD_REQUIRED_DEPENDENCY("hpp-wholebody-step >= 4")
ENDIF ()
IF (TEST_UR5)
ADD_REQUIRED_DEPENDENCY("hpp_universal_robot") ADD_REQUIRED_DEPENDENCY("hpp_universal_robot")
ENDIF () ENDIF()
CONFIG_FILES (doc/main.hh CONFIG_FILES(doc/main.hh
include/hpp/manipulation/package-config.hh) include/hpp/manipulation/package-config.hh)
SET (${PROJECT_NAME}_HEADERS SET(${PROJECT_NAME}_HEADERS
${CMAKE_BINARY_DIR}/include/hpp/manipulation/package-config.hh ${CMAKE_BINARY_DIR}/include/hpp/manipulation/package-config.hh
include/hpp/manipulation/fwd.hh include/hpp/manipulation/fwd.hh
include/hpp/manipulation/handle.hh include/hpp/manipulation/handle.hh
...@@ -103,10 +99,73 @@ SET (${PROJECT_NAME}_HEADERS ...@@ -103,10 +99,73 @@ SET (${PROJECT_NAME}_HEADERS
include/hpp/manipulation/steering-method/end-effector-trajectory.hh include/hpp/manipulation/steering-method/end-effector-trajectory.hh
) )
ADD_SUBDIRECTORY(src) SET(${PROJECT_NAME}_SOURCES
src/handle.cc
src/manipulation-planner.cc
src/problem-solver.cc
src/roadmap.cc
src/connected-component.cc
src/leaf-connected-comp.cc
src/constraint-set.cc
src/roadmap-node.cc
src/device.cc
src/weighed-distance.cc
src/problem.cc
src/graph-path-validation.cc
src/graph-optimizer.cc
src/graph/state.cc
src/graph/edge.cc
src/graph/graph.cc
src/graph/graph-component.cc
src/graph/state-selector.cc
src/graph/guided-state-selector.cc
src/graph/statistics.cc
src/graph/helper.cc
src/graph/dot.cc
src/graph/validation.cc
src/path-optimization/random-shortcut.cc
src/path-optimization/enforce-transition-semantic.cc
src/path-planner/end-effector-trajectory.cc
src/problem-target/state.cc
src/steering-method/end-effector-trajectory.cc
src/steering-method/cross-state-optimization.cc
src/steering-method/graph.cc
)
IF(HPP_MANIPULATION_HAS_WHOLEBODY_STEP)
SET(${PROJECT_NAME}_SOURCES
${${PROJECT_NAME}_SOURCES}
src/path-optimization/small-steps.cc
)
ENDIF(HPP_MANIPULATION_HAS_WHOLEBODY_STEP)
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} hpp-core::hpp-core ${Boost_REGEX_LIBRARY})
IF(HPP_MANIPULATION_HAS_WHOLEBODY_STEP)
TARGET_LINK_LIBRARIES(${PROJECT_NAME} hpp-wholebody-step::hpp-wholebody-step)
ENDIF(HPP_MANIPULATION_HAS_WHOLEBODY_STEP)
INSTALL(TARGETS ${PROJECT_NAME} EXPORT ${TARGETS_EXPORT_NAME} DESTINATION lib)
# GPL licenced part
SET(${PROJECT_NAME}_SOURCES_GPL
src/path-optimization/spline-gradient-based.cc
)
ADD_LIBRARY(${PROJECT_NAME}-gpl SHARED ${${PROJECT_NAME}_SOURCES_GPL})
TARGET_LINK_LIBRARIES(${PROJECT_NAME}-gpl ${PROJECT_NAME} hpp-core::hpp-core-gpl)
INSTALL(TARGETS ${PROJECT_NAME}-gpl EXPORT ${TARGETS_EXPORT_NAME} DESTINATION lib)
ADD_SUBDIRECTORY(plugins) ADD_SUBDIRECTORY(plugins)
ADD_SUBDIRECTORY(tests) ADD_SUBDIRECTORY(tests)
# Add dependency toward hpp-manipulation library in pkg-config file. PKG_CONFIG_APPEND_LIBS(${PROJECT_NAME})
PKG_CONFIG_APPEND_LIBS("hpp-manipulation")
PKG_CONFIG_APPEND_BOOST_LIBS(${BOOST_INSTALL_COMPONENTS})
Subproject commit 7eca9ee6c9d1c4ee20eb82272e94f9d11642053a Subproject commit 7ab756beff8729739c45731dfc1edb6f88d2dbc8
# Copyright (c) 2019, Joseph Mirabel # Copyright (c) 2019, 2020, CNRS
# Authors: Joseph Mirabel (joseph.mirabel@laas.fr) # Authors: Joseph Mirabel (joseph.mirabel@laas.fr)
# Authors: Guilhem Saurel (guilhem.saurel@laas.fr)
# #
# This file is part of hpp-manipulation. # This file is part of hpp-manipulation.
# hpp-manipulation is free software: you can redistribute it # hpp-manipulation is free software: you can redistribute it
...@@ -18,10 +19,8 @@ INCLUDE(${HPP_CORE_CMAKE_PLUGIN}) ...@@ -18,10 +19,8 @@ INCLUDE(${HPP_CORE_CMAKE_PLUGIN})
HPP_ADD_PLUGIN(manipulation-spline-gradient-based HPP_ADD_PLUGIN(manipulation-spline-gradient-based
SOURCES spline-gradient-based.cc SOURCES spline-gradient-based.cc
LINK_DEPENDENCIES ${PROJECT_NAME} ${PROJECT_NAME}-gpl hpp-core-gpl LINK_DEPENDENCIES ${PROJECT_NAME}-gpl)
PKG_CONFIG_DEPENDENCIES hpp-core)
HPP_ADD_PLUGIN(end-effector-trajectory HPP_ADD_PLUGIN(end-effector-trajectory
SOURCES end-effector-trajectory.cc SOURCES end-effector-trajectory.cc
LINK_DEPENDENCIES ${PROJECT_NAME} LINK_DEPENDENCIES ${PROJECT_NAME})
PKG_CONFIG_DEPENDENCIES hpp-core)
#
# Copyright (c) 2014 CNRS
# Authors: Florent Lamiraux
#
#
# This file is part of hpp-manipulation
# hpp-manipulation is free software: you can redistribute it
# and/or modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation, either version
# 3 of the License, or (at your option) any later version.
#
# hpp-manipulation is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Lesser Public License for more details. You should have
# received a copy of the GNU Lesser General Public License along with
# hpp-manipulation If not, see
# <http://www.gnu.org/licenses/>.
SET(LIBRARY_NAME ${PROJECT_NAME})
SET(SOURCES
handle.cc
manipulation-planner.cc
problem-solver.cc
roadmap.cc
connected-component.cc
leaf-connected-comp.cc
constraint-set.cc
roadmap-node.cc
device.cc
weighed-distance.cc
problem.cc
graph-path-validation.cc
graph-optimizer.cc
graph/state.cc
graph/edge.cc
graph/graph.cc
graph/graph-component.cc
graph/state-selector.cc
graph/guided-state-selector.cc
graph/statistics.cc
graph/helper.cc
graph/dot.cc
graph/validation.cc
path-optimization/random-shortcut.cc
path-optimization/enforce-transition-semantic.cc
path-planner/end-effector-trajectory.cc
problem-target/state.cc
steering-method/end-effector-trajectory.cc
steering-method/cross-state-optimization.cc
steering-method/graph.cc
)
IF(HPP_WHOLEBODY_STEP_FOUND)
SET(SOURCES
${SOURCES}
path-optimization/small-steps.cc
)
ENDIF(HPP_WHOLEBODY_STEP_FOUND)
ADD_LIBRARY(${LIBRARY_NAME} SHARED ${SOURCES})
PKG_CONFIG_USE_DEPENDENCY(${LIBRARY_NAME} hpp-core)
PKG_CONFIG_USE_DEPENDENCY(${LIBRARY_NAME} hpp-statistics)
PKG_CONFIG_USE_DEPENDENCY(${LIBRARY_NAME} hpp-constraints)
IF(HPP_WHOLEBODY_STEP_FOUND)
PKG_CONFIG_USE_DEPENDENCY(${LIBRARY_NAME} hpp-wholebody-step)
ENDIF(HPP_WHOLEBODY_STEP_FOUND)
TARGET_LINK_LIBRARIES(${LIBRARY_NAME} ${Boost_LIBRARIES})
INSTALL(TARGETS ${LIBRARY_NAME} DESTINATION lib)
ADD_LIBRARY(${LIBRARY_NAME}-gpl SHARED
path-optimization/spline-gradient-based.cc
)
PKG_CONFIG_USE_DEPENDENCY(${LIBRARY_NAME}-gpl hpp-core)
PKG_CONFIG_USE_DEPENDENCY(${LIBRARY_NAME}-gpl hpp-statistics)
PKG_CONFIG_USE_DEPENDENCY(${LIBRARY_NAME}-gpl hpp-constraints)
IF(HPP_WHOLEBODY_STEP_FOUND)
PKG_CONFIG_USE_DEPENDENCY(${LIBRARY_NAME}-gpl hpp-wholebody-step)
ENDIF(HPP_WHOLEBODY_STEP_FOUND)
TARGET_LINK_LIBRARIES(${LIBRARY_NAME}-gpl ${LIBRARY_NAME} hpp-core-gpl)
INSTALL(TARGETS ${LIBRARY_NAME}-gpl DESTINATION lib)
# Copyright 2012, 2013, 2014 CNRS-LAAS # Copyright 2012, 2013, 2014, 2020 CNRS-LAAS
# #
# Author: Mathieu Geisert # Authors: Mathieu Geisert, Guilhem Saurel
# #
# This file is part of hpp-core # This file is part of hpp-core
# hpp-manipulation is free software: you can redistribute it and/or modify # hpp-manipulation is free software: you can redistribute it and/or modify
...@@ -15,8 +15,6 @@ ...@@ -15,8 +15,6 @@
# You should have received a copy of the GNU Lesser General Public License # You should have received a copy of the GNU Lesser General Public License
# along with hpp-manipulation If not, see <http://www.gnu.org/licenses/>. # along with hpp-manipulation If not, see <http://www.gnu.org/licenses/>.
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
# Make Boost.Test generates the main function in test cases. # Make Boost.Test generates the main function in test cases.
ADD_DEFINITIONS(-DBOOST_TEST_DYN_LINK -DBOOST_TEST_MAIN) ADD_DEFINITIONS(-DBOOST_TEST_DYN_LINK -DBOOST_TEST_MAIN)
...@@ -28,24 +26,12 @@ ADD_DEFINITIONS(-DBOOST_TEST_DYN_LINK -DBOOST_TEST_MAIN) ...@@ -28,24 +26,12 @@ ADD_DEFINITIONS(-DBOOST_TEST_DYN_LINK -DBOOST_TEST_MAIN)
# This macro will create a binary from `NAME.cc', link it against # This macro will create a binary from `NAME.cc', link it against
# Boost and add it to the test suite. # Boost and add it to the test suite.
# #
MACRO(ADD_TESTCASE NAME GENERATED) MACRO(ADD_TESTCASE NAME)
IF (${GENERATED} STREQUAL TRUE) ADD_UNIT_TEST(${NAME} ${NAME}.cc)
ADD_EXECUTABLE(${NAME} ${CMAKE_CURRENT_BINARY_DIR}/${NAME}.cc) TARGET_LINK_LIBRARIES(${NAME} ${PROJECT_NAME} ${Boost_LIBRARIES})
ELSE()
ADD_EXECUTABLE(${NAME} ${NAME}.cc)
ENDIF()
ADD_TEST(${NAME} ${RUNTIME_OUTPUT_DIRECTORY}/${NAME})
PKG_CONFIG_USE_DEPENDENCY (${NAME} hpp-constraints)
# Link against Boost and project library.
TARGET_LINK_LIBRARIES(${NAME}
${PROJECT_NAME}
${Boost_LIBRARIES}
)
ENDMACRO(ADD_TESTCASE) ENDMACRO(ADD_TESTCASE)
IF (TEST_UR5) IF(TEST_UR5)
ADD_TESTCASE (test-constraintgraph FALSE) ADD_TESTCASE(test-constraintgraph)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DTEST_UR5") TARGET_COMPILE_DEFINITIONS(test-constraintgraph -DTEST_UR5)
ENDIF () ENDIF()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment