diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 52793ea1631bfcd7810ab6f27a99b2425d510ced..73b0cf358dfa0f478b1b30aa23305c50b83badde 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -116,7 +116,7 @@ build_and_test:bionic: - ci_deps/wolf/ - key: yamlschemacpp-bionic paths: - - ci_deps/yaml_schema_cpp/ + - ci_deps/yaml-schema-cpp/ - key: imu-bionic paths: - ci_deps/imu/ @@ -141,7 +141,7 @@ build_and_test:focal: - ci_deps/wolf/ - key: yamlschemacpp-focal paths: - - ci_deps/yaml_schema_cpp/ + - ci_deps/yaml-schema-cpp/ - key: imu-focal paths: - ci_deps/imu/ @@ -166,7 +166,7 @@ build_and_test:jammy: - ci_deps/wolf/ - key: yamlschemacpp-jammy paths: - - ci_deps/yaml_schema_cpp/ + - ci_deps/yaml-schema-cpp/ - key: imu-jammy paths: - ci_deps/imu/ diff --git a/CMakeLists.txt b/CMakeLists.txt index 305d3210e8f1130896930df5173d34a4b52cc970..22f79752cb61df76fa737a4a9e58fd10032e2d69 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ # Pre-requisites about cmake itself -CMAKE_MINIMUM_REQUIRED(VERSION 3.10) +CMAKE_MINIMUM_REQUIRED(VERSION 3.16) # MAC OSX RPATH SET(CMAKE_MACOSX_RPATH 1) @@ -7,14 +7,16 @@ SET(CMAKE_MACOSX_RPATH 1) # The project name PROJECT(bodydynamics) set(PLUGIN_NAME wolf${PROJECT_NAME}) - MESSAGE("Starting ${PROJECT_NAME} CMakeLists ...") +# Paths +SET(CMAKE_SKIP_INSTALL_ALL_DEPENDENCY FALSE) SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/bin) SET(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/lib) set(INCLUDE_INSTALL_DIR include/wolf) set(LIB_INSTALL_DIR lib/) +# Build type IF (NOT CMAKE_BUILD_TYPE) SET(CMAKE_BUILD_TYPE "DEBUG") ENDIF (NOT CMAKE_BUILD_TYPE) @@ -55,7 +57,6 @@ ENDIF(NOT BUILD_DOC) ############# ## Testing ## ############# -# if(BUILD_TESTS) # Enables testing for this directory and below. # Note that ctest expects to find a test file in the build directory root. @@ -74,10 +75,11 @@ option(_WOLF_TRACE "Enable wolf tracing macro" ON) # ============ DEPENDENCIES ============ FIND_PACKAGE(wolfcore REQUIRED CONFIG) FIND_PACKAGE(wolfimu REQUIRED) -FIND_PACKAGE(Eigen3 3.3 REQUIRED CONFIG) # ============ CONFIG.H ============ set(_WOLF_CODE_DIR ${CMAKE_SOURCE_DIR}) +set(_WOLF_LIB_DIR ${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}) + # variable used to compile the config.h.in file string(TOUPPER ${PROJECT_NAME} PROJECT_NAME_UPPER) @@ -93,76 +95,73 @@ IF(EXISTS "${WOLF_CONFIG_DIR}" AND NOT IS_DIRECTORY "${WOLF_CONFIG_DIR}") message(FATAL_ERROR "Bug: Specified CONFIG_DIR: " "${WOLF_CONFIG_DIR} exists, but is not a directory.") ENDIF() + # Configure config.h configure_file(${CMAKE_CURRENT_SOURCE_DIR}/internal/config.h.in "${WOLF_CONFIG_DIR}/config.h") -include_directories("${PROJECT_BINARY_DIR}/conf") - -# ============ INCLUDES ============ -INCLUDE_DIRECTORIES(BEFORE "include") # ============ HEADERS ============ SET(HDRS_MATH -include/${PROJECT_NAME}/math/force_torque_delta_tools.h + include/${PROJECT_NAME}/math/force_torque_delta_tools.h ) SET(HDRS_CAPTURE -include/${PROJECT_NAME}/capture/capture_force_torque_preint.h -include/${PROJECT_NAME}/capture/capture_inertial_kinematics.h -include/${PROJECT_NAME}/capture/capture_leg_odom.h -include/${PROJECT_NAME}/capture/capture_point_feet_nomove.h + include/${PROJECT_NAME}/capture/capture_force_torque_preint.h + include/${PROJECT_NAME}/capture/capture_inertial_kinematics.h + include/${PROJECT_NAME}/capture/capture_leg_odom.h + include/${PROJECT_NAME}/capture/capture_point_feet_nomove.h ) SET(HDRS_COMMON -include/${PROJECT_NAME}/common/bodydynamics.h + include/${PROJECT_NAME}/common/bodydynamics.h ) SET(HDRS_FACTOR -include/${PROJECT_NAME}/factor/factor_force_torque.h -include/${PROJECT_NAME}/factor/factor_force_torque_preint.h -include/${PROJECT_NAME}/factor/factor_inertial_kinematics.h -include/${PROJECT_NAME}/factor/factor_point_feet_nomove.h -include/${PROJECT_NAME}/factor/factor_point_feet_altitude.h + include/${PROJECT_NAME}/factor/factor_force_torque.h + include/${PROJECT_NAME}/factor/factor_force_torque_preint.h + include/${PROJECT_NAME}/factor/factor_inertial_kinematics.h + include/${PROJECT_NAME}/factor/factor_point_feet_nomove.h + include/${PROJECT_NAME}/factor/factor_point_feet_altitude.h ) SET(HDRS_FEATURE -include/${PROJECT_NAME}/feature/feature_force_torque.h -include/${PROJECT_NAME}/feature/feature_force_torque_preint.h -include/${PROJECT_NAME}/feature/feature_inertial_kinematics.h + include/${PROJECT_NAME}/feature/feature_force_torque.h + include/${PROJECT_NAME}/feature/feature_force_torque_preint.h + include/${PROJECT_NAME}/feature/feature_inertial_kinematics.h ) SET(HDRS_PROCESSOR -include/${PROJECT_NAME}/processor/processor_force_torque_preint.h -include/${PROJECT_NAME}/processor/processor_inertial_kinematics.h -include/${PROJECT_NAME}/processor/processor_point_feet_nomove.h + include/${PROJECT_NAME}/processor/processor_force_torque_preint.h + include/${PROJECT_NAME}/processor/processor_inertial_kinematics.h + include/${PROJECT_NAME}/processor/processor_point_feet_nomove.h ) SET(HDRS_SENSOR -include/${PROJECT_NAME}/sensor/sensor_force_torque.h -include/${PROJECT_NAME}/sensor/sensor_inertial_kinematics.h -include/${PROJECT_NAME}/sensor/sensor_point_feet_nomove.h + include/${PROJECT_NAME}/sensor/sensor_force_torque.h + include/${PROJECT_NAME}/sensor/sensor_inertial_kinematics.h + include/${PROJECT_NAME}/sensor/sensor_point_feet_nomove.h ) SET(HDRS_UTILS -include/${PROJECT_NAME}/utils/load_bodydynamics.h + include/${PROJECT_NAME}/utils/load_bodydynamics.h ) # ============ SOURCES ============ SET(SRCS_CAPTURE -src/capture/capture_force_torque_preint.cpp -src/capture/capture_inertial_kinematics.cpp -src/capture/capture_leg_odom.cpp -src/capture/capture_point_feet_nomove.cpp + src/capture/capture_force_torque_preint.cpp + src/capture/capture_inertial_kinematics.cpp + src/capture/capture_leg_odom.cpp + src/capture/capture_point_feet_nomove.cpp ) SET(SRCS_FEATURE -src/feature/feature_force_torque.cpp -src/feature/feature_force_torque_preint.cpp -src/feature/feature_inertial_kinematics.cpp + src/feature/feature_force_torque.cpp + src/feature/feature_force_torque_preint.cpp + src/feature/feature_inertial_kinematics.cpp ) SET(SRCS_PROCESSOR -src/processor/processor_force_torque_preint.cpp -src/processor/processor_inertial_kinematics.cpp -src/processor/processor_point_feet_nomove.cpp + src/processor/processor_force_torque_preint.cpp + src/processor/processor_inertial_kinematics.cpp + src/processor/processor_point_feet_nomove.cpp ) SET(SRCS_SENSOR -src/sensor/sensor_force_torque.cpp -src/sensor/sensor_inertial_kinematics.cpp -src/sensor/sensor_point_feet_nomove.cpp + src/sensor/sensor_force_torque.cpp + src/sensor/sensor_inertial_kinematics.cpp + src/sensor/sensor_point_feet_nomove.cpp ) SET(SRCS_UTILS -src/utils/load_bodydynamics.cpp + src/utils/load_bodydynamics.cpp ) # create the shared library @@ -188,24 +187,23 @@ elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") endif() #Link the created libraries -#===============EXAMPLE========================= TARGET_LINK_LIBRARIES(${PLUGIN_NAME} PUBLIC wolfcore) TARGET_LINK_LIBRARIES(${PLUGIN_NAME} PUBLIC wolfimu) -TARGET_LINK_LIBRARIES(${PLUGIN_NAME} PUBLIC Eigen3::Eigen) # Build demos +#======================================== IF(BUILD_DEMOS) MESSAGE("Building demos.") ADD_SUBDIRECTORY(demos) ENDIF(BUILD_DEMOS) #Build tests +#======================================== IF(BUILD_TESTS) MESSAGE("Building tests.") add_subdirectory(test) ENDIF(BUILD_TESTS) - #install library #============================================================= INSTALL(TARGETS ${PLUGIN_NAME} EXPORT ${PLUGIN_NAME}Targets @@ -231,9 +229,9 @@ install( ${LIB_INSTALL_DIR}/${PLUGIN_NAME}/cmake ) -# Specifies include directories to use when compiling the plugin target -# This way, include_directories does not need to be called in plugins depending on this one -target_include_directories(${PLUGIN_NAME} INTERFACE +target_include_directories(${PLUGIN_NAME} PUBLIC + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> + $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/conf> $<INSTALL_INTERFACE:${INCLUDE_INSTALL_DIR}> ) @@ -253,9 +251,14 @@ INSTALL(FILES ${HDRS_SENSOR} INSTALL(FILES ${HDRS_UTILS} DESTINATION ${INCLUDE_INSTALL_DIR}/${PROJECT_NAME}/utils) -INSTALL(FILES "${WOLF_CONFIG_DIR}/config.h" +#install config.h +INSTALL(FILES ${WOLF_CONFIG_DIR}/config.h DESTINATION ${INCLUDE_INSTALL_DIR}/${PROJECT_NAME}/internal) +#install schemas +INSTALL(DIRECTORY schema + DESTINATION ${INCLUDE_INSTALL_DIR}/${PROJECT_NAME}/schema) + export(PACKAGE ${PLUGIN_NAME}) FIND_PACKAGE(Doxygen MODULE)