From b321b528e1da9a18ee0d85439be68cef22c23e43 Mon Sep 17 00:00:00 2001 From: John Wason Date: Mon, 29 Jul 2024 14:46:37 -0400 Subject: [PATCH] Fix Windows and Mac OS Github Actions (#489) --- .github/workflows/mac.yml | 34 +++++++++++++------ .../arm64-osx-dynamic-release.cmake | 9 +++++ .github/workflows/windows.yml | 7 ++-- tesseract_task_composer/core/CMakeLists.txt | 15 ++++++-- .../core/nodes/has_data_storage_entry_task.h | 3 +- .../core/task_composer_node.h | 2 +- .../planning/CMakeLists.txt | 10 +++++- .../nodes/continuous_contact_check_task.h | 3 +- .../nodes/discrete_contact_check_task.h | 3 +- .../planning/nodes/fix_state_bounds_task.h | 3 +- .../planning/nodes/fix_state_collision_task.h | 3 +- .../planning/nodes/format_as_input_task.h | 3 +- .../planning/nodes/format_as_result_task.h | 3 +- .../iterative_spline_parameterization_task.h | 3 +- .../planning/nodes/min_length_task.h | 3 +- .../nodes/process_planning_input_task.h | 3 +- .../planning/nodes/profile_switch_task.h | 3 +- .../planning/nodes/raster_motion_task.h | 3 +- .../planning/nodes/raster_only_motion_task.h | 3 +- .../nodes/ruckig_trajectory_smoothing_task.h | 3 +- .../time_optimal_parameterization_task.h | 3 +- .../planning/nodes/update_end_state_task.h | 3 +- .../nodes/update_start_and_end_state_task.h | 3 +- .../planning/nodes/update_start_state_task.h | 3 +- .../planning/nodes/upsample_trajectory_task.h | 3 +- ...ct_task_composer_plugin_factories_unit.cpp | 21 ++++++++++++ 26 files changed, 118 insertions(+), 37 deletions(-) create mode 100644 .github/workflows/vcpkg_triplets/arm64-osx-dynamic-release.cmake diff --git a/.github/workflows/mac.yml b/.github/workflows/mac.yml index 72b0eaac10..34a7467e79 100644 --- a/.github/workflows/mac.yml +++ b/.github/workflows/mac.yml @@ -18,7 +18,7 @@ on: env: VCPKG_PKGS: >- - boost-dll boost-program-options + boost-dll boost-program-options boost-stacktrace boost-serialization boost-filesystem boost-format tinyxml2 console-bridge assimp urdfdom octomap orocos-kdl pcl @@ -31,7 +31,19 @@ env: jobs: build-macos: - runs-on: macos-latest + strategy: + fail-fast: false + matrix: + config: + - runner: macos-12 + vcpkg_triplet: x64-osx-dynamic-release + arch: x64 + homebrew_root: /usr/local + - runner: macos-14 + vcpkg_triplet: arm64-osx-dynamic-release + arch: arm64 + homebrew_root: /opt/homebrew + runs-on: ${{ matrix.config.runner }} steps: - uses: actions/checkout@v2 with: @@ -48,10 +60,10 @@ jobs: with: pkgs: >- ${{ env.VCPKG_PKGS }} - triplet: x64-osx-dynamic-release + triplet: ${{ matrix.config.vcpkg_triplet }} extra-args: --clean-after-build --overlay-triplets=${{ github.workspace }}/ws/src/tesseract_planning/.github/workflows/vcpkg_triplets token: ${{ github.token }} - cache-key: osx-x64-vcpkg + cache-key: osx-${{ matrix.config.arch }}-vcpkg revision: master github-binarycache: true - name: pip3 @@ -63,8 +75,8 @@ jobs: - name: colcon build working-directory: ws run: | - export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:$GITHUB_WORKSPACE/vcpkg/installed/x64-osx-dynamic-release/lib - export CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/vcpkg/installed/x64-osx-dynamic-release + export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:$GITHUB_WORKSPACE/vcpkg/installed/${{ matrix.config.vcpkg_triplet }}/lib + export CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/vcpkg/installed/${{ matrix.config.vcpkg_triplet }} colcon build --merge-install \ --packages-ignore tesseract_examples trajopt_ifopt trajopt_sqp ifopt vhacd tesseract_python \ @@ -75,17 +87,17 @@ jobs: -DBUILD_SHARED_LIBS=ON -DTESSERACT_ENABLE_EXAMPLES=OFF -DTESSERACT_BUILD_TRAJOPT_IFOPT=OFF \ -DVCPKG_APPLOCAL_DEPS=OFF -DTESSERACT_ENABLE_TESTING=ON \ -DCMAKE_OSX_DEPLOYMENT_TARGET=12.0 \ - -DOpenMP_CXX_INCLUDE_DIR=/usr/local/opt/libomp/include \ - -DOpenMP_C_INCLUDE_DIR=/usr/local/opt/libomp/include \ + -DOpenMP_CXX_INCLUDE_DIR=${{ matrix.config.homebrew_root }}/opt/libomp/include \ + -DOpenMP_C_INCLUDE_DIR=${{ matrix.config.homebrew_root }}/opt/libomp/include \ -DOpenMP_CXX_LIB_NAMES=libomp -DOpenMP_CXX_FLAGS="-Xpreprocessor -fopenmp" \ -DOpenMP_C_LIB_NAMES=libomp -DOpenMP_C_FLAGS="-Xpreprocessor -fopenmp" \ - -DOpenMP_libomp_LIBRARY=/usr/local/opt/libomp/lib/libomp.dylib \ + -DOpenMP_libomp_LIBRARY=${{ matrix.config.homebrew_root }}/opt/libomp/lib/libomp.dylib -Dtcmalloc_minimal_LIBRARY=${{ github.workspace }}/vcpkg/installed/x64-osx-dynamic-release/lib/libtcmalloc_minimal.dylib - name: colcon test working-directory: ws run: | - export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:$GITHUB_WORKSPACE/vcpkg/installed/x64-osx-dynamic-release/lib - export CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/vcpkg/installed/x64-osx-dynamic-release + export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:$GITHUB_WORKSPACE/vcpkg/installed/${{ matrix.config.vcpkg_triplet }}/lib + export CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/vcpkg/installed/${{ matrix.config.vcpkg_triplet }} colcon test --merge-install \ --packages-ignore tesseract_examples trajopt_ifopt trajopt_sqp ifopt vhacd tesseract_python \ diff --git a/.github/workflows/vcpkg_triplets/arm64-osx-dynamic-release.cmake b/.github/workflows/vcpkg_triplets/arm64-osx-dynamic-release.cmake new file mode 100644 index 0000000000..9ff5889fb6 --- /dev/null +++ b/.github/workflows/vcpkg_triplets/arm64-osx-dynamic-release.cmake @@ -0,0 +1,9 @@ +set(VCPKG_TARGET_ARCHITECTURE arm64) +set(VCPKG_CRT_LINKAGE dynamic) +set(VCPKG_LIBRARY_LINKAGE dynamic) + +set(VCPKG_CMAKE_SYSTEM_NAME Darwin) +set(VCPKG_OSX_ARCHITECTURES arm64) + +set(VCPKG_BUILD_TYPE release) +set(VCPKG_OSX_DEPLOYMENT_TARGET 14.0) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 9486202c72..3afc257e02 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -32,7 +32,7 @@ jobs: pkgs: >- fcl bullet3[multithreading,double-precision,rtti] octomap console-bridge eigen3 yaml-cpp benchmark tinyxml2 assimp orocos-kdl pcl - lapack-reference boost-dll boost-filesystem boost-serialization boost-format + lapack-reference boost-dll boost-filesystem boost-serialization boost-format boost-stacktrace boost-program-options boost-graph urdfdom ccd[double-precision] gtest ompl taskflow jsoncpp flann benchmark triplet: x64-windows-release @@ -57,6 +57,7 @@ jobs: with: ccache-prefix: ${{ matrix.distro }} vcs-file: .github/workflows/windows_dependencies.repos - upstream-args: --cmake-args -G "Ninja" -DVCPKG_TARGET_TRIPLET=x64-windows-release -DCMAKE_BUILD_TYPE=Release -DBUILD_IPOPT=OFF -DBUILD_SNOPT=OFF + upstream-args: --cmake-args -G "Ninja" -DVCPKG_TARGET_TRIPLET=x64-windows-release -DCMAKE_BUILD_TYPE=Release -DBUILD_IPOPT=OFF -DBUILD_SNOPT=OFF -DTESSERACT_BUILD_TRAJOPT_IFOPT=OFF -DVCPKG_APPLOCAL_DEPS=OFF target-path: target_ws/src - target-args: --cmake-args -G "Ninja" -DVCPKG_TARGET_TRIPLET=x64-windows-release -DCMAKE_BUILD_TYPE=Release -DTESSERACT_ENABLE_TESTING=ON + target-args: --packages-ignore tesseract_examples --cmake-args -G "Ninja" -DVCPKG_TARGET_TRIPLET=x64-windows-release -DCMAKE_BUILD_TYPE=Release -DTESSERACT_ENABLE_TESTING=ON -DTESSERACT_BUILD_TRAJOPT_IFOPT=OFF -DVCPKG_APPLOCAL_DEPS=OFF + run-tests-args: --packages-ignore tesseract_examples diff --git a/tesseract_task_composer/core/CMakeLists.txt b/tesseract_task_composer/core/CMakeLists.txt index 550690c83a..ca5b5c1b18 100644 --- a/tesseract_task_composer/core/CMakeLists.txt +++ b/tesseract_task_composer/core/CMakeLists.txt @@ -1,3 +1,6 @@ +# Need to create export header so static class variables can be exported on windows build +include(GenerateExportHeader) + add_library( ${PROJECT_NAME} src/task_composer_data_storage.cpp @@ -13,6 +16,7 @@ add_library( src/task_composer_plugin_factory.cpp src/task_composer_server.cpp src/task_composer_task.cpp) + target_link_libraries( ${PROJECT_NAME} PUBLIC console_bridge::console_bridge @@ -35,8 +39,9 @@ target_code_coverage( ALL EXCLUDE ${COVERAGE_EXCLUDE} ENABLE ${TESSERACT_ENABLE_CODE_COVERAGE}) -target_include_directories(${PROJECT_NAME} PUBLIC "$" - "$") +target_include_directories( + ${PROJECT_NAME} PUBLIC "$" + "$" "$") add_library( ${PROJECT_NAME}_nodes @@ -47,6 +52,9 @@ add_library( src/nodes/start_task.cpp src/nodes/sync_task.cpp src/test_suite/test_task.cpp) + +generate_export_header(${PROJECT_NAME}_nodes) + target_link_libraries( ${PROJECT_NAME}_nodes PUBLIC ${PROJECT_NAME} @@ -97,6 +105,9 @@ install( PATTERN "*.h" PATTERN "*.hpp") +install(FILES ${PROJECT_BINARY_DIR}/core/tesseract_task_composer_nodes_export.h + DESTINATION include/${PROJECT_NAME}/core/ COMPONENT core) + # Plugin should not be export only installed install( TARGETS ${PROJECT_NAME}_factories diff --git a/tesseract_task_composer/core/include/tesseract_task_composer/core/nodes/has_data_storage_entry_task.h b/tesseract_task_composer/core/include/tesseract_task_composer/core/nodes/has_data_storage_entry_task.h index 58d464a1e0..e9bbc213ac 100644 --- a/tesseract_task_composer/core/include/tesseract_task_composer/core/nodes/has_data_storage_entry_task.h +++ b/tesseract_task_composer/core/include/tesseract_task_composer/core/nodes/has_data_storage_entry_task.h @@ -5,6 +5,7 @@ TESSERACT_COMMON_IGNORE_WARNINGS_PUSH #include #include +#include TESSERACT_COMMON_IGNORE_WARNINGS_POP #include @@ -12,7 +13,7 @@ TESSERACT_COMMON_IGNORE_WARNINGS_POP namespace tesseract_planning { class TaskComposerPluginFactory; -class HasDataStorageEntryTask : public TaskComposerTask +class TESSERACT_TASK_COMPOSER_NODES_EXPORT HasDataStorageEntryTask : public TaskComposerTask { public: // Requried diff --git a/tesseract_task_composer/core/include/tesseract_task_composer/core/task_composer_node.h b/tesseract_task_composer/core/include/tesseract_task_composer/core/task_composer_node.h index 5d714f1983..a15b62278f 100644 --- a/tesseract_task_composer/core/include/tesseract_task_composer/core/task_composer_node.h +++ b/tesseract_task_composer/core/include/tesseract_task_composer/core/task_composer_node.h @@ -40,6 +40,7 @@ TESSERACT_COMMON_IGNORE_WARNINGS_POP #include #include +#include namespace YAML { @@ -48,7 +49,6 @@ class Node; namespace tesseract_planning { -class TaskComposerNodeInfo; class TaskComposerDataStorage; enum class TaskComposerNodeType diff --git a/tesseract_task_composer/planning/CMakeLists.txt b/tesseract_task_composer/planning/CMakeLists.txt index ff337f1f7f..37114b74f6 100644 --- a/tesseract_task_composer/planning/CMakeLists.txt +++ b/tesseract_task_composer/planning/CMakeLists.txt @@ -1,3 +1,6 @@ +# Need to create export header so static class variables can be exported on windows build +include(GenerateExportHeader) + find_package(tesseract_command_language REQUIRED) find_package( tesseract_motion_planners REQUIRED @@ -138,7 +141,9 @@ target_code_coverage( ENABLE ${TESSERACT_ENABLE_CODE_COVERAGE}) target_include_directories( ${PROJECT_NAME}_planning_nodes PUBLIC "$" - "$") + "$" "$") + +generate_export_header(${PROJECT_NAME}_planning_nodes) # Create factories target add_library(${PROJECT_NAME}_planning_factories ${FACTORIES_SOURCE_FILES}) @@ -171,6 +176,9 @@ install( PATTERN "*.hpp" PATTERN ".svn" EXCLUDE) +install(FILES ${PROJECT_BINARY_DIR}/planning/tesseract_task_composer_planning_nodes_export.h + DESTINATION include/${PROJECT_NAME}/planning/ COMPONENT planning) + # Plugin should not be export only installed install( TARGETS ${PROJECT_NAME}_planning_factories diff --git a/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/continuous_contact_check_task.h b/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/continuous_contact_check_task.h index 3c81416ac9..a096b3942e 100644 --- a/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/continuous_contact_check_task.h +++ b/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/continuous_contact_check_task.h @@ -30,6 +30,7 @@ TESSERACT_COMMON_IGNORE_WARNINGS_PUSH #include #include #include +#include TESSERACT_COMMON_IGNORE_WARNINGS_POP #include @@ -41,7 +42,7 @@ TESSERACT_COMMON_IGNORE_WARNINGS_POP namespace tesseract_planning { class TaskComposerPluginFactory; -class ContinuousContactCheckTask : public TaskComposerTask +class TESSERACT_TASK_COMPOSER_PLANNING_NODES_EXPORT ContinuousContactCheckTask : public TaskComposerTask { public: // Requried diff --git a/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/discrete_contact_check_task.h b/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/discrete_contact_check_task.h index b43c129fde..5600e70d78 100644 --- a/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/discrete_contact_check_task.h +++ b/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/discrete_contact_check_task.h @@ -30,6 +30,7 @@ TESSERACT_COMMON_IGNORE_WARNINGS_PUSH #include #include #include +#include TESSERACT_COMMON_IGNORE_WARNINGS_POP #include @@ -41,7 +42,7 @@ TESSERACT_COMMON_IGNORE_WARNINGS_POP namespace tesseract_planning { class TaskComposerPluginFactory; -class DiscreteContactCheckTask : public TaskComposerTask +class TESSERACT_TASK_COMPOSER_PLANNING_NODES_EXPORT DiscreteContactCheckTask : public TaskComposerTask { public: // Requried diff --git a/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/fix_state_bounds_task.h b/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/fix_state_bounds_task.h index 8b92e0583d..8c80cc0dcf 100644 --- a/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/fix_state_bounds_task.h +++ b/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/fix_state_bounds_task.h @@ -30,6 +30,7 @@ TESSERACT_COMMON_IGNORE_WARNINGS_PUSH #include #include +#include TESSERACT_COMMON_IGNORE_WARNINGS_POP #include @@ -42,7 +43,7 @@ class TaskComposerPluginFactory; * @brief This task modifies the input instructions in order to push waypoints that are outside of their * limits back within them. */ -class FixStateBoundsTask : public TaskComposerTask +class TESSERACT_TASK_COMPOSER_PLANNING_NODES_EXPORT FixStateBoundsTask : public TaskComposerTask { public: // Requried diff --git a/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/fix_state_collision_task.h b/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/fix_state_collision_task.h index 3cb2ff1717..d10dadd08e 100644 --- a/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/fix_state_collision_task.h +++ b/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/fix_state_collision_task.h @@ -30,6 +30,7 @@ TESSERACT_COMMON_IGNORE_WARNINGS_PUSH #include #include +#include TESSERACT_COMMON_IGNORE_WARNINGS_POP #include @@ -50,7 +51,7 @@ struct FixStateCollisionProfile; * * First it uses TrajOpt to correct the waypoint. If that fails, it reverts to random sampling */ -class FixStateCollisionTask : public TaskComposerTask +class TESSERACT_TASK_COMPOSER_PLANNING_NODES_EXPORT FixStateCollisionTask : public TaskComposerTask { public: // Requried diff --git a/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/format_as_input_task.h b/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/format_as_input_task.h index 0968dc8101..0cb33fab55 100644 --- a/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/format_as_input_task.h +++ b/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/format_as_input_task.h @@ -33,6 +33,7 @@ TESSERACT_COMMON_IGNORE_WARNINGS_PUSH #include #include +#include TESSERACT_COMMON_IGNORE_WARNINGS_POP #include @@ -51,7 +52,7 @@ class TaskComposerPluginFactory; * input_keys[0]: The original input to motion planning * input_keys[1]: The output of the first motion plan which failed collision checking */ -class FormatAsInputTask : public TaskComposerTask +class TESSERACT_TASK_COMPOSER_PLANNING_NODES_EXPORT FormatAsInputTask : public TaskComposerTask { public: // Requried diff --git a/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/format_as_result_task.h b/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/format_as_result_task.h index fd832658ab..29ffabd75a 100644 --- a/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/format_as_result_task.h +++ b/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/format_as_result_task.h @@ -5,6 +5,7 @@ TESSERACT_COMMON_IGNORE_WARNINGS_PUSH #include #include +#include TESSERACT_COMMON_IGNORE_WARNINGS_POP #include @@ -12,7 +13,7 @@ TESSERACT_COMMON_IGNORE_WARNINGS_POP namespace tesseract_planning { class TaskComposerPluginFactory; -class FormatAsResultTask : public TaskComposerTask +class TESSERACT_TASK_COMPOSER_PLANNING_NODES_EXPORT FormatAsResultTask : public TaskComposerTask { public: // Requried diff --git a/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/iterative_spline_parameterization_task.h b/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/iterative_spline_parameterization_task.h index 4778d0537c..3947c5b8ad 100644 --- a/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/iterative_spline_parameterization_task.h +++ b/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/iterative_spline_parameterization_task.h @@ -30,6 +30,7 @@ TESSERACT_COMMON_IGNORE_WARNINGS_PUSH #include #include +#include TESSERACT_COMMON_IGNORE_WARNINGS_POP #include @@ -39,7 +40,7 @@ TESSERACT_COMMON_IGNORE_WARNINGS_POP namespace tesseract_planning { class TaskComposerPluginFactory; -class IterativeSplineParameterizationTask : public TaskComposerTask +class TESSERACT_TASK_COMPOSER_PLANNING_NODES_EXPORT IterativeSplineParameterizationTask : public TaskComposerTask { public: // Requried diff --git a/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/min_length_task.h b/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/min_length_task.h index ead8d1b32e..2afc4c8499 100644 --- a/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/min_length_task.h +++ b/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/min_length_task.h @@ -31,6 +31,7 @@ TESSERACT_COMMON_IGNORE_WARNINGS_PUSH #include #include +#include TESSERACT_COMMON_IGNORE_WARNINGS_POP #include @@ -38,7 +39,7 @@ TESSERACT_COMMON_IGNORE_WARNINGS_POP namespace tesseract_planning { class TaskComposerPluginFactory; -class MinLengthTask : public TaskComposerTask +class TESSERACT_TASK_COMPOSER_PLANNING_NODES_EXPORT MinLengthTask : public TaskComposerTask { public: // Requried diff --git a/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/process_planning_input_task.h b/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/process_planning_input_task.h index a4b894a544..ad45629796 100644 --- a/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/process_planning_input_task.h +++ b/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/process_planning_input_task.h @@ -31,6 +31,7 @@ TESSERACT_COMMON_IGNORE_WARNINGS_PUSH #include #include +#include TESSERACT_COMMON_IGNORE_WARNINGS_POP #include @@ -38,7 +39,7 @@ TESSERACT_COMMON_IGNORE_WARNINGS_POP namespace tesseract_planning { class TaskComposerPluginFactory; -class ProcessPlanningInputTask : public TaskComposerTask +class TESSERACT_TASK_COMPOSER_PLANNING_NODES_EXPORT ProcessPlanningInputTask : public TaskComposerTask { public: // Requried diff --git a/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/profile_switch_task.h b/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/profile_switch_task.h index 40831d9904..d0873270f7 100644 --- a/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/profile_switch_task.h +++ b/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/profile_switch_task.h @@ -28,6 +28,7 @@ TESSERACT_COMMON_IGNORE_WARNINGS_PUSH #include #include +#include TESSERACT_COMMON_IGNORE_WARNINGS_POP #include @@ -39,7 +40,7 @@ class TaskComposerPluginFactory; * @brief This task simply returns a value specified in the composite profile. This can be used to switch execution * based on the profile */ -class ProfileSwitchTask : public TaskComposerTask +class TESSERACT_TASK_COMPOSER_PLANNING_NODES_EXPORT ProfileSwitchTask : public TaskComposerTask { public: // Requried diff --git a/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/raster_motion_task.h b/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/raster_motion_task.h index 37864a28d1..03482d67ee 100644 --- a/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/raster_motion_task.h +++ b/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/raster_motion_task.h @@ -31,6 +31,7 @@ TESSERACT_COMMON_IGNORE_WARNINGS_PUSH #include #include #include +#include TESSERACT_COMMON_IGNORE_WARNINGS_POP #include @@ -56,7 +57,7 @@ class TaskComposerPluginFactory; * } */ -class RasterMotionTask : public TaskComposerTask +class TESSERACT_TASK_COMPOSER_PLANNING_NODES_EXPORT RasterMotionTask : public TaskComposerTask { public: // Requried diff --git a/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/raster_only_motion_task.h b/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/raster_only_motion_task.h index 58b753eefe..2410b4164f 100644 --- a/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/raster_only_motion_task.h +++ b/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/raster_only_motion_task.h @@ -31,6 +31,7 @@ TESSERACT_COMMON_IGNORE_WARNINGS_PUSH #include #include #include +#include TESSERACT_COMMON_IGNORE_WARNINGS_POP #include @@ -52,7 +53,7 @@ class TaskComposerPluginFactory; * Composite - Raster segment * } */ -class RasterOnlyMotionTask : public TaskComposerTask +class TESSERACT_TASK_COMPOSER_PLANNING_NODES_EXPORT RasterOnlyMotionTask : public TaskComposerTask { public: // Requried diff --git a/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/ruckig_trajectory_smoothing_task.h b/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/ruckig_trajectory_smoothing_task.h index 3e0a18b43a..8ed42834fb 100644 --- a/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/ruckig_trajectory_smoothing_task.h +++ b/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/ruckig_trajectory_smoothing_task.h @@ -28,6 +28,7 @@ TESSERACT_COMMON_IGNORE_WARNINGS_PUSH #include #include +#include TESSERACT_COMMON_IGNORE_WARNINGS_POP #include @@ -35,7 +36,7 @@ TESSERACT_COMMON_IGNORE_WARNINGS_POP namespace tesseract_planning { class TaskComposerPluginFactory; -class RuckigTrajectorySmoothingTask : public TaskComposerTask +class TESSERACT_TASK_COMPOSER_PLANNING_NODES_EXPORT RuckigTrajectorySmoothingTask : public TaskComposerTask { public: // Requried diff --git a/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/time_optimal_parameterization_task.h b/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/time_optimal_parameterization_task.h index 684e1ee926..116141e159 100644 --- a/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/time_optimal_parameterization_task.h +++ b/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/time_optimal_parameterization_task.h @@ -31,6 +31,7 @@ TESSERACT_COMMON_IGNORE_WARNINGS_PUSH #include #include +#include TESSERACT_COMMON_IGNORE_WARNINGS_POP #include @@ -39,7 +40,7 @@ TESSERACT_COMMON_IGNORE_WARNINGS_POP namespace tesseract_planning { class TaskComposerPluginFactory; -class TimeOptimalParameterizationTask : public TaskComposerTask +class TESSERACT_TASK_COMPOSER_PLANNING_NODES_EXPORT TimeOptimalParameterizationTask : public TaskComposerTask { public: // Requried diff --git a/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/update_end_state_task.h b/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/update_end_state_task.h index 6397b662b5..ccc1960f09 100644 --- a/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/update_end_state_task.h +++ b/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/update_end_state_task.h @@ -29,13 +29,14 @@ TESSERACT_COMMON_IGNORE_WARNINGS_PUSH #include #include +#include TESSERACT_COMMON_IGNORE_WARNINGS_POP #include namespace tesseract_planning { -class UpdateEndStateTask : public TaskComposerTask +class TESSERACT_TASK_COMPOSER_PLANNING_NODES_EXPORT UpdateEndStateTask : public TaskComposerTask { public: // Requried diff --git a/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/update_start_and_end_state_task.h b/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/update_start_and_end_state_task.h index d1e8595d11..42917107ff 100644 --- a/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/update_start_and_end_state_task.h +++ b/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/update_start_and_end_state_task.h @@ -29,13 +29,14 @@ TESSERACT_COMMON_IGNORE_WARNINGS_PUSH #include #include +#include TESSERACT_COMMON_IGNORE_WARNINGS_POP #include namespace tesseract_planning { -class UpdateStartAndEndStateTask : public TaskComposerTask +class TESSERACT_TASK_COMPOSER_PLANNING_NODES_EXPORT UpdateStartAndEndStateTask : public TaskComposerTask { public: // Requried diff --git a/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/update_start_state_task.h b/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/update_start_state_task.h index 517e67e5dc..7f39a9f5b3 100644 --- a/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/update_start_state_task.h +++ b/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/update_start_state_task.h @@ -29,13 +29,14 @@ TESSERACT_COMMON_IGNORE_WARNINGS_PUSH #include #include +#include TESSERACT_COMMON_IGNORE_WARNINGS_POP #include namespace tesseract_planning { -class UpdateStartStateTask : public TaskComposerTask +class TESSERACT_TASK_COMPOSER_PLANNING_NODES_EXPORT UpdateStartStateTask : public TaskComposerTask { public: // Requried diff --git a/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/upsample_trajectory_task.h b/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/upsample_trajectory_task.h index 7b5274460b..918da768db 100644 --- a/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/upsample_trajectory_task.h +++ b/tesseract_task_composer/planning/include/tesseract_task_composer/planning/nodes/upsample_trajectory_task.h @@ -29,6 +29,7 @@ TESSERACT_COMMON_IGNORE_WARNINGS_PUSH #include #include +#include TESSERACT_COMMON_IGNORE_WARNINGS_POP #include @@ -43,7 +44,7 @@ class TaskComposerPluginFactory; * assume joint interpolated between states. If the points are spaced to fart apart the path between * two states may not be a straight line causing collision during execution. */ -class UpsampleTrajectoryTask : public TaskComposerTask +class TESSERACT_TASK_COMPOSER_PLANNING_NODES_EXPORT UpsampleTrajectoryTask : public TaskComposerTask { public: // Requried diff --git a/tesseract_task_composer/test/tesseract_task_composer_plugin_factories_unit.cpp b/tesseract_task_composer/test/tesseract_task_composer_plugin_factories_unit.cpp index 47769eb592..78bde3db9c 100644 --- a/tesseract_task_composer/test/tesseract_task_composer_plugin_factories_unit.cpp +++ b/tesseract_task_composer/test/tesseract_task_composer_plugin_factories_unit.cpp @@ -134,8 +134,15 @@ TEST(TesseractTaskComposerFactoryUnit, LoadAndExportPluginTest) // NOLINT } { // String Constructor +#ifdef TESSERACT_TASK_COMPOSER_HAS_TRAJOPT_IFOPT tesseract_common::fs::path config_path(std::string(TESSERACT_TASK_COMPOSER_DIR) + "/config/" "task_composer_plugins.yaml"); +#else + tesseract_common::fs::path config_path(std::string(TESSERACT_TASK_COMPOSER_DIR) + "/config/" + "task_composer_plugins_no_" + "trajopt_" + "ifopt.yaml"); +#endif TaskComposerPluginFactory factory(tesseract_common::fileToString(config_path)); YAML::Node plugin_config = YAML::LoadFile(config_path.string()); @@ -148,8 +155,15 @@ TEST(TesseractTaskComposerFactoryUnit, LoadAndExportPluginTest) // NOLINT } { // YAML Node Constructor +#ifdef TESSERACT_TASK_COMPOSER_HAS_TRAJOPT_IFOPT tesseract_common::fs::path config_path(std::string(TESSERACT_TASK_COMPOSER_DIR) + "/config/" "task_composer_plugins.yaml"); +#else + tesseract_common::fs::path config_path(std::string(TESSERACT_TASK_COMPOSER_DIR) + "/config/" + "task_composer_plugins_no_" + "trajopt_" + "ifopt.yaml"); +#endif YAML::Node plugin_config = YAML::LoadFile(config_path.string()); TaskComposerPluginFactory factory(plugin_config); @@ -163,8 +177,15 @@ TEST(TesseractTaskComposerFactoryUnit, LoadAndExportPluginTest) // NOLINT // TaskComposerPluginInfo Constructor { +#ifdef TESSERACT_TASK_COMPOSER_HAS_TRAJOPT_IFOPT tesseract_common::fs::path config_path(std::string(TESSERACT_TASK_COMPOSER_DIR) + "/config/" "task_composer_plugins.yaml"); +#else + tesseract_common::fs::path config_path(std::string(TESSERACT_TASK_COMPOSER_DIR) + "/config/" + "task_composer_plugins_no_" + "trajopt_" + "ifopt.yaml"); +#endif YAML::Node plugin_config = YAML::LoadFile(config_path.string()); const YAML::Node& plugins = plugin_config[tesseract_common::TaskComposerPluginInfo::CONFIG_KEY];