【发布时间】:2021-03-04 02:33:12
【问题描述】:
我有一个由 CMakeLists.txt 文件描述的 C++ 项目,如果我从终端调用 CMake,CMake 会从该文件成功生成一个 MAKE 文件。 (这是在 Ubuntu 上。)
该项目依赖于 Boost 和 Eigen,它们都安装在我的系统上。我可以看到 /usr/include/boost 中包含 Boost,/usr/lib/x86_64-linux-gnu 中包含 Boost 二进制文件,/usr/lib/x86_64-linux-gnu/cmake/ 中包含 Boost .cmake 文件。我在 /usr/include/eigen3 和 Eigen3Config.cmake 中看到 Eigen 标头 /usr/lib/cmake/eigen3。
我的 CMakeLists.txt 文件在配置模式下调用 find_package 如下:
find_package(Eigen3 CONFIG REQUIRED)
if (${Eigen3_FOUND})
Message(STATUS "eigen found...")
endif (${Eigen3_FOUND})
find_package(Boost 1.7 CONFIG REQUIRED QUIET)
if (${Boost_FOUND})
Message(STATUS "boost found...")
endif (${Boost_FOUND})
上述操作在命令行中按预期工作,但是当我尝试从 CLion 2020.2.3 打开项目时,出现以下错误
CMakeLists.txt:4 (find_package) 处的 CMake 错误:找不到 由“Eigen3”提供的包配置文件与任何 以下名称:
Eigen3Config.cmake eigen3-config.cmake将“Eigen3”的安装前缀添加到CMAKE_PREFIX_PATH或设置 “Eigen3_DIR”到包含上述文件之一的目录。如果 《Eigen3》提供单独的开发包或SDK,请务必 已安装。
如果我更改find_package 调用的顺序,CMake 将无法找到类似的 boost。
【问题讨论】: