【问题标题】:cmake does not find QtQuick even if it's installed即使已安装 cmake 也找不到 QtQuick
【发布时间】:2021-12-14 15:36:27
【问题描述】:

我使用在线安装程序安装了 Qt 6.2.0,并选择了大部分用于桌面开发的模块。 我收到这条奇怪的消息:

/home/user/Qt/Examples/Qt-6.2.0/multimedia/video/mediaplayer/CMakeLists.txt:28: error: Found package configuration file: /home/user/Qt/6.2.0/gcc_64/lib/cmake/Qt6/Qt6Config.cmake but it set Qt6_FOUND to FALSE so package "Qt6" is considered to be NOT FOUND.  Reason given by package: Failed to find Qt component "Quick". Expected Config file at "/home/user/Qt/6.2.0/gcc_64/lib/cmake/Qt6Quick/Qt6QuickConfig.cmake" exists

英语不是我的主要语言,我不确定最后一句话的真正含义:

"Expected Config file at <path> exists"

其实文件是存在的:

$ ls /home/user/Qt/6.2.0/gcc_64/lib/cmake/Qt6Quick/Qt6QuickConfig.cmake 
/home/user/Qt/6.2.0/gcc_64/lib/cmake/Qt6Quick/Qt6QuickConfig.cmake

我不明白为什么它找不到 QtQuick 然后我不知道如何修复它...

【问题讨论】:

  • 输出看起来在exists 之后还有更多单词。这些话可以解释为什么给定的文件不适合。
  • @Tsyvarev 这很有意义。但不幸的是,这是它打印出来的整个字符串。

标签: c++ qt cmake qtquick2


【解决方案1】:

未能找到 Qt 组件“Quick”。

查看文件lib/cmake/Qt6Quick/Qt6QuickTargets.cmake

变量_IMPORT_PREFIX 告诉cmake
在哪里可以找到 QtQuick 的 include/lib/ 文件

通常它是 cmake 文件的父-父-父文件夹
所以/home/user/Qt/6.2.0/gcc_64在你的情况下

为了调试,添加到Qt6QuickTargets.cmake

get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
# ...

message("debug: _IMPORT_PREFIX = ${_IMPORT_PREFIX}")

文件libQt6Quick.so 应该在_IMPORT_PREFIX 路径中

否则找到它

cd /home/user/Qt/6.2.0/gcc_64
find . -name 'libQt6Quick.so*'

相关:
环境变量QT_ADDITIONAL_PACKAGES_PREFIX_PATH
帮助qt找到lib/cmake/Qt6(modulename)/Qt6(modulename)Targets.cmake文件

【讨论】: