我正在开发一个需要使用Eigen库的ROS Indigo项目。根据ROS Wiki上的indigo / Migration页面,FindEigen.cmake模块现在位于cmake_modules包中。
按照步骤将cmake_modules包添加到项目的CMake.txt(通过find_package)并将构建依赖项添加到package.xml(< build_depend >cmake_modules< /build_depend >
)后,我仍然遇到编译项目的问题。我已经看过各种来源,引用上述步骤应该解决ROS Indigo中的问题,但似乎无法让它工作。这是CMake文件,这里是package.xml。另外,我在项目文件夹中添加了FindEigen.cmake文件。任何帮助将不胜感激!错误如下:
CMake Error at /opt/ros/indigo/share/catkin/cmake/catkinConfig.cmake:75 (find_package):
Could not find a package configuration file provided by "Eigen" with any of the
following names:
EigenConfig.cmake
eigen-config.cmake
Add the installation prefix of "Eigen" to CMAKE_PREFIX_PATH or set
"Eigen_DIR" to a directory containing one of the above files. If "Eigen"
provides a separate development package or SDK, be sure it has been
installed.
Call Stack (most recent call first):
lidar_point_cloud/CMakeLists.txt:9 (find_package)
答案 0 :(得分:10)
仅用于帖子完整性,并在Answers ROS中跟随this answer:
如果您已经安装了Eigen(请与sudo apt-get install libeigen3-dev
联系),那么您必须将相应的cmake_modules
和Eigen
行添加到CMakeLists.txt和package.xml文件中:< / p>
<强> package.xml中强>
<build_depend>cmake_modules</build_depend>
<run_depend>cmake_modules</run_depend>
<强>的CMakeLists.txt 强>
find_package(catkin REQUIRED cmake_modules)
find_package(Eigen REQUIRED)
catkin_package(
INCLUDE_DIRS ...
LIBRARIES ...
CATKIN_DEPENDS ....
DEPENDS Eigen
)
include_directories(
...
${Eigen_INCLUDE_DIRS}
)
更新:请注意,以下内容不是必需的,因为FindEigen.cmake模块未定义Eigen_LIBRARIES
,因为它只是一个标题库:
target_link_libraries(my_target
....
${Eigen_LIBRARIES}
)
更多信息:http://wiki.ros.org/indigo/Migration#cmake_modules
UPDATE :实际上不需要<run_depend>cmake_modules</run_depend>
,因为cmake_modules
不是运行时依赖项。
此外,您可以使用ROS ecl包装器:http://wiki.ros.org/ecl
答案 1 :(得分:0)
Eigen不是一个ROS包,而是一个独立的库。因此,不要将其列为catkin的一个组件,而只需添加一个单独的find_package
调用:
find_package(Eigen REQUIRED)
我现在不能再仔细检查(目前正坐在一台机器人身上),但我很确定,这对我来说也很有效。
答案 2 :(得分:0)
我有同样的问题,这解决了它:(Ubuntu 14.04)
sudo apt-get install libeigen3-dev
答案 3 :(得分:0)
对我来说,“sudo apt-get install libeigen3-dev”无效。所以我通过make文件安装它,并遵循包中给出的安装程序,即
-download the package from http://eigen.tuxfamily.org/index.php?title=Main_Page
-create another directory which we will call 'build_dir'
-cd build_dir
-cmake source_dir
-make install
如果这不能解决您的问题,您可以将 eigen3 文件夹从(mine was at /usr/local/include)
复制到/ usr / include。使用命令
sudo cp -r /usr/local/include/eigen3 /usr/include