无法通过CMake找到Eigen3

时间:2015-12-07 16:51:07

标签: c++ cmake eigen3

我有点绝望: 对于我的学习,我需要与Eigen和CMake合作。我可以使用Eigen,如果我将整个库复制到我的编译器默认看到的目录中,但是一旦我尝试通过
找到它 scrapy crawl my_spider --logfile myspider.log
我收到以下错误:

find_package(Eigen3 REQUIRED)

CMake Error at /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:148 (message): Could NOT find Eigen3 (missing: EIGEN3_INCLUDE_DIR EIGEN3_VERSION_OK) (Required is at least version "2.91.0") Call Stack (most recent call first): /usr/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:388 (_FPHSA_FAILURE_MESSAGE) FindEigen3.cmake:76 (find_package_handle_standard_args) CMakeLists.txt:8 (find_package)


现在我搜索了解决方案但是我尝试过的所有解决方案(也包括stackoverflow上提供的解决方案:
Find package Eigen3 for CMake 要么 CMake Can't find Eigen3) 不工作。 我的Eigen版本(根据-- Configuring incomplete, errors occurred! 中的宏)是3.2.5。 我将Eigen目录保存在Core/util/Macros.h中,我使用了Eigen库附带的/usr/local/include,我的FindEigen3.cmake看起来如下:

CMakeLists.txt

有谁知道出了什么问题?

亲切的问候, 于连

2 个答案:

答案 0 :(得分:7)

将我的评论转化为答案

find包脚本 - 如FindEigen3.cmake - 通常使用find_path()命令来检测包的include目录(有关详细信息,请参阅it's documentation)。

FindEigen3.cmake使用以下代码段:

find_path(EIGEN3_INCLUDE_DIR NAMES signature_of_eigen3_matrix_library
    PATHS
    ${CMAKE_INSTALL_PREFIX}/include
    ${KDE4_INCLUDE_DIR}
    PATH_SUFFIXES eigen3 eigen
)

所以它在CMAKE_INSTALL_PREFIX看起来默认情况下在Unix / Linux主机上是/usr/local

以下对我有用:

  • 转到Eigen源目录并运行CMake和安装步骤

    > mkdir build
    > cd build
    > cmake ..
    > make install
    
  • 然后复制 - 正如您所做的那样 - FindEigen3.cmake到您的项目源目录。

  • 现在您的代码找到了Eigen(刚刚更改为list(APPEND ...)

    list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}")
    find_package(Eigen3 REQUIRED)
    

<强>参考

答案 1 :(得分:1)

FindEigen3.cmake之前添加find_package(Eigen3 REQUIRED)的路径,如下所示:

LIST(APPEND CMAKE_MODULE_PATH "/usr/share/cmake-2.8/Modules/")
find_package(Eigen3)