【问题标题】:CMake: find Qt packages when two Qt versions are installedCMake:安装两个 Qt 版本时查找 Qt 包
【发布时间】:2018-04-10 18:14:23
【问题描述】:

在我的计算机 (Ubuntu-Gnome) 上安装了两个 Qt 版本。一个使用包管理器 (5.x),另一个手动到 /opt/Qt (5.9)。

对于一个项目,我需要将 /opt/Qt-安装与 CMake 一起使用。但是find_package(Qt5Core 5.9 COMPONENTS CORE REQUIRED)没有找到正确的安装:

  Could not find a configuration file for package "Qt5Core" that is
  compatible with requested version "5.9".

  The following configuration files were considered but not accepted:

    /usr/lib/x86_64-linux-gnu/cmake/Qt5Core/Qt5CoreConfig.cmake, version: 5.7.1

我尝试设置 CMAKE_PREFIX_PATHCMAKE_MODULE_PATH 以将搜索路径添加到包含所有路径变体的 CMake,但它根本不起作用。

如何在/opt/Qt/正确设置第二次安装的搜索路径?


为了@Florian 输入的更新

这行得通:

find_package(
   Qt5Core 5.9
   COMPONENTS
      Core
   REQUIRED
)

一起

cmake -DQt5_DIR:PATH=/opt/Qt/5.9.2/gcc_64/lib/cmake/Qt5Core

但在这种情况下,我只找到了 QT5Core。有了它,它似乎也适用于所有组件:

find_package(
   Qt5 5.9
   COMPONENTS
      Core
   REQUIRED
)

一起

cmake -DQt5_DIR:PATH=/opt/Qt/5.9.2/gcc_64/lib/cmake/Qt5

第二次编辑

为了避免总是将完整路径放在调用中,我将其添加到我的 CMakeLists.txt

set(QT_INSTALL_PATH /opt/Qt)
file( GLOB_RECURSE sres ${QT_INSTALL_PATH}/*/Qt5Config.cmake )
get_filename_component( Qt5_DIR ${sres} DIRECTORY )

之后这工作正常:

find_package(
   Qt5 5.9
   COMPONENTS
      Core
      Network
   REQUIRED
)

【问题讨论】:

  • 你试过类似cmake -DQt5Core_DIR:PATH=/opt/Qt/5.9/gcc_64/lib/cmake/Qt5Core ..的东西吗?
  • @Florian 是的 - 但它不起作用。现在我尝试生成所有路径的列表以将它们传递给find_package。我想知道没有办法说:这是Qt的基本文件夹。在这里递归搜索。
  • 奇怪。您可以通过忽略“不需要的”路径来尝试相反的方法:cmake -DCMAKE_IGNORE_PATH="/usr/lib/x86_64-linux-gnu/cmake/Qt5Core"

标签: qt cmake


【解决方案1】:

使用cmake -DQt5_DIR:PATH=/opt/Qt5/5.9.2/gcc_64/lib/cmake/Qt5

Documentation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-12
    • 1970-01-01
    • 2013-09-28
    • 1970-01-01
    • 2022-10-15
    • 2014-03-04
    • 2019-04-17
    • 1970-01-01
    相关资源
    最近更新 更多