diff --git a/data_tamer_cpp/CMakeLists.txt b/data_tamer_cpp/CMakeLists.txt index 388c9be..5924974 100644 --- a/data_tamer_cpp/CMakeLists.txt +++ b/data_tamer_cpp/CMakeLists.txt @@ -29,6 +29,17 @@ if (DATA_TAMER_BUILD_ROS) endif() endif() +option(DATA_TAMER_EIGEN_SUPPORT "Enable Eigen support" ON) +if (DATA_TAMER_EIGEN_SUPPORT) + find_package(Eigen3 QUIET) + if (NOT Eigen3_FOUND) + set(DATA_TAMER_EIGEN_SUPPORT FALSE) + message(WARNING "Eigen3 not found, building without Eigen support. Set DATA_TAMER_EIGEN_SUPPORT to false to disable this warning.") + else() + message(STATUS "Eigen3 found, building with Eigen support.") + endif() +endif() + ########################################### # check if mcap can be found. If true, # probably we used conan. If false, build from 3rdparty @@ -95,6 +106,7 @@ target_include_directories(data_tamer $ ) target_compile_definitions(data_tamer PUBLIC -DDATA_TAMER_VERSION="${CMAKE_PROJECT_VERSION}") +target_compile_definitions(data_tamer PUBLIC DATA_TAMER_EIGEN_SUPPORT=$) set(INSTALL_TARGETS data_tamer) @@ -125,18 +137,33 @@ if (DATA_TAMER_BUILD_ROS) ${MCAP_LIBRARY} ) + if (DATA_TAMER_EIGEN_SUPPORT) + target_link_libraries(data_tamer PUBLIC Eigen3::Eigen) + endif() + ament_export_targets(data_tamerTargets HAS_LIBRARY_TARGET) ament_export_dependencies(mcap_vendor rclcpp rclcpp_lifecycle data_tamer_msgs) + if (DATA_TAMER_EIGEN_SUPPORT) + ament_export_dependencies(Eigen3) + endif() + ament_package() elseif( USE_VENDORED_MCAP ) target_include_directories(data_tamer PRIVATE $ ) target_link_libraries(data_tamer PRIVATE mcap_lib) + if (DATA_TAMER_EIGEN_SUPPORT) + target_link_libraries(data_tamer PUBLIC Eigen3::Eigen) + endif() + list(APPEND INSTALL_TARGETS mcap_lib) else() find_package(mcap REQUIRED) target_link_libraries(data_tamer PRIVATE mcap::mcap) + if (DATA_TAMER_EIGEN_SUPPORT) + target_link_libraries(data_tamer PUBLIC Eigen3::Eigen) + endif() endif() install( diff --git a/data_tamer_cpp/include/data_tamer/channel.hpp b/data_tamer_cpp/include/data_tamer/channel.hpp index 6cee1a5..22cb721 100644 --- a/data_tamer_cpp/include/data_tamer/channel.hpp +++ b/data_tamer_cpp/include/data_tamer/channel.hpp @@ -7,6 +7,10 @@ #include #include +#if DATA_TAMER_EIGEN_SUPPORT +#include +#endif + namespace DataTamer { using SerializeMe::has_TypeDefinition; @@ -86,8 +90,9 @@ class LogChannel : public std::enable_shared_from_this * @param value pointer to the vectors of values. * @return the ID to be used to unregister or enable/disable the values. */ - template