eigen3_cmake_module package from eigen3_cmake_module repo

eigen3_cmake_module

Package Summary

Tags No category tags.
Version 0.1.1
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/ros2/eigen3_cmake_module.git
VCS Type git
VCS Version master
Last Updated 2019-08-08
Dev Status MAINTAINED
Released RELEASED

Package Description

Exports a custom CMake module to find Eigen3.

Additional Links

No additional links.

Maintainers

  • Shane Loretz

Authors

  • Shane Loretz

eigen3_cmake_module

On Ubuntu Bionic, the Eigen3 CMake package offers exported targets and non-standard CMake variables. This is a problem for packages using ament_cmake.

Targets using ament_target_dependencies(my_target Eigen3) will fail to find Eigen3 headers at compile time. Downstream packages will also fail to find Eigen3 headers at compile time, even if your package uses ament_export_dependencies(Eigen3).

This package adds a CMake find module for Eigen3 that sets standard CMake variables. ROS 2 packages using Eigen3 should use this package to avoid these problems.

Using this package

Edit your CMakeLists.txt

In your CMakeLists.txt, call find_package() on this package using REQUIRED. Afterwards, find Eigen3 with or without REQUIRED as appropriate for your package.

find_package(eigen3_cmake_module REQUIRED)
find_package(Eigen3)

Using with ament_cmake

If your package uses ament_cmake, then use ament_target_dependencies() to give your library or executable targets access to the Eigen3 headers.

# add_library(my_thing ...)
# # OR
# add_executable(my_thing ...)
# ...
ament_target_dependencies(my_thing Eigen3)

If Eigen3 appears in headers installed by your package, then downstream packages will need the Eigen3 headers too. Call ament_export_dependencies() on this package, and afterwards do the same for Eigen3.

ament_export_dependencies(eigen3_cmake_module)
ament_export_dependencies(Eigen3)

Using without ament_cmake

If your package does not use ament_cmake, then use target_include_directories() to give your targets access to the Eigen3 headers.

target_include_directories(my_target PUBLIC "${Eigen3_INCLUDE_DIRS}")

If Eigen3 is used in headers installed by your package, then your <project>-config.cmake must find both this package and Eigen3. Afterwards the Eigen3 headers should be added to your package's include variable.

find_package(eigen3_cmake_module)
if (NOT eigen3_cmake_module_FOUND)
  set(your_package_name_FOUND 0)
  return()
endif()

find_package(Eigen3)
if (NOT Eigen3_FOUND)
  set(your_package_name_FOUND 0)
  return()
endif()

list(APPEND your_package_name_INCLUDE_DIRS ${Eigen3_INCLUDE_DIRS})

Edit your package.xml

Add a buildtool dependency to this package, and a build dependency to Eigen3 to your package.xml.

<buildtool_depend>eigen3_cmake_module</buildtool_depend>
<build_depend>eigen</build_depend>

If your package uses Eigen3 in public headers, then also add these tags so downstream packages also depend on this package and Eigen3.

<buildtool_export_depend>eigen3_cmake_module</buildtool_export_depend>
<build_export_depend>eigen</build_export_depend>

<exec_depend> is not necessary because Eigen3 is a header only library.

CHANGELOG

Changelog for package eigen3_cmake_module

0.1.1 (2019-08-08)

  • Handle Eigen3 3.3.4 chocolatey package (#3)
  • Update README (#2)
  • Contributors: Marya Belanger, Shane Loretz

0.1.0 (2019-08-06)

  • Initial release (#1)
  • Contributors: Shane Loretz

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Package Dependencies

System Dependencies

No direct system dependencies.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged eigen3_cmake_module at answers.ros.org

No version for distro crystal. Known supported distros are highlighted in the buttons above.
No version for distro bouncy. Known supported distros are highlighted in the buttons above.
No version for distro melodic. Known supported distros are highlighted in the buttons above.
No version for distro kinetic. Known supported distros are highlighted in the buttons above.
No version for distro ardent. Known supported distros are highlighted in the buttons above.
No version for distro lunar. Known supported distros are highlighted in the buttons above.
No version for distro jade. Known supported distros are highlighted in the buttons above.
No version for distro indigo. Known supported distros are highlighted in the buttons above.
No version for distro hydro. Known supported distros are highlighted in the buttons above.