【问题标题】:Why does CLion's integrated CMake fail to find installed packages?为什么 CLion 的集成 CMake 找不到已安装的包?
【发布时间】: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/eigen3Eigen3Config.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。

【问题讨论】:

    标签: c++ linux cmake clion


    【解决方案1】:

    实际上,这种行为似乎是由于将 CLion 安装为 flatpak 包造成的。我作为普通二进制文件卸载并重新安装,问题就消失了。 (这里是 Linux 新手...)

    这与此处描述的问题相同:Jetbrains YouTrack。要点似乎是不要通过 Flatpak 安装 JetBrains 产品。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-12
      • 2016-06-07
      • 2020-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-05
      • 2021-02-27
      相关资源
      最近更新 更多