cmake find_package 无法找到 Eigen3Config.cmake 光谱 Windows

cmake find_package unable to find Eigen3Config.cmake spectra Windows

我正在使用 Eigen3 和光谱 (https://spectralib.org/),这是一个建立在 Eigen 之上的库。 Spectra使用find_package求Eigen,报错:

 Could not find a package configuration file provided by "Eigen3" with any
  of the following names:

    Eigen3Config.cmake
    eigen3-config.cmake

查看Eigen的目录,我发现没有这些名称的文件,而是一个名为Eigen3Config.cmake.in的文件。我尝试复制文件并将其重命名为 Eigen3Config.cmake,但这给了我一个不同的错误

find_package Error reading CMake code from "C:/Program Files
  (x86)/Eigen3/cmake/Eigen3Config.cmake".

这有点意料之中,但它确实告诉我它至少可以找到 Eigen3Config.cmake.in 所在的目录。我假设 find_package 应该使用 Eigen3Config.cmake.in,或者 Eigen3Config.cmake.in 应该生成 Eigen3Config.cmake,但我对 cmake 很陌生,所以我不确定。我该如何解决这个问题?

如果您手动包含它,则无需 build/install Eigen 即可使用它,如入门示例中所做的那样 (https://eigen.tuxfamily.org/dox/GettingStarted.html#title0)

但是为了被 CMake 找到,您需要构建/安装它,如 INSTALL 文件中所述。 https://gitlab.com/libeigen/eigen/-/blob/master/INSTALL

通常,您的错误之后会提示您设置变量 Eigen3_DIR(或类似的东西)以指向目标项目(此处为 Eigen3)的 build/install 目录。它通常在您构建但未安装项目时出现。

所以:

  1. 构建本征
  2. 安装它(可选)
  3. 对于光谱,将 cmake var Eigen3_DIR 设置为 /path/to/Eigen/build .(如果特征未安装或仍未找到)

这些步骤对我有用:

  1. 安装 Eigen
  2. 为 Eigen 创建构建目录
  3. cd 进入创建的构建目录
  4. 运行 "cmake ../"你的特征源目录""

完成后,在项目的 CMakeLists.txt 中,您需要添加“find_package( Eigen3 REQUIRED)”和“include_directories( ${EIGEN3_INCLUDE_DIR})".