CMake: 当安装了两个版本的Qt时,如何查找Qt包

9
在我的电脑上(Ubuntu-Gnome),安装了两个Qt版本。一个是使用软件包管理器安装的(5.x),另一个是手动安装到/opt/Qt(5.9)的。
对于一个项目,我需要使用与CMake一起的/opt/Qt安装。但是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
@Florian 是的 - 但它不起作用。现在我尝试生成所有路径的列表,以将它们传递给 find_package。我想知道是否有办法说:这是Qt的基本文件夹。在此处递归搜索。 - Alex44
奇怪。您可以尝试通过忽略“不需要的”路径来尝试另一种方法:cmake -DCMAKE_IGNORE_PATH="/usr/lib/x86_64-linux-gnu/cmake/Qt5Core" - Florian
1个回答

7

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

文档


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接