如何让 CMake 识别我安装了 QT5? (构建 vktraceviewer)

How do I get CMake to recognize I have QT5 installed? (building vktraceviewer)

免责声明:我不熟悉 CMake 的内部结构。


我通过 git (https://github.com/LunarG/VulkanTools.git)

下载了 Vulkan 工具

按照 BUILD.md 中的说明,我使用:

cmake -H. -Bdbuild -DCMAKE_BUILD_TYPE=Debug

这给了我:

WARNING: Qt5 dev libraries not found, vktraceviewer will not be built.
   To enable build of vktraceviewer, install package qt5-default.

我已经安装了 qt5-default。 检查 CMake 文件,我发现它在 vktrace/CMakeLists.txt 第 572 行失败:

if (NOT Qt5_FOUND)

Grepping Qt5_FOUND,我没有看到它被设置在任何地方,而且我通过 Google 没有取得多大成功。我假设它是从外部某处设置的,所以我认为问题可能与 VulkanTools 无关。

我的下一步是什么?问题可能出在哪里?制作? Vulkan工具? QT5?徐本图?


规格(如果相关):

这很可能是由于缺少 Qt5 组件引起的,或者更确切地说,是缺少作为组件开发包的一部分安装的配置文件。 If you look at the line where Qt5 is imported, you'll see:

find_package(Qt5 COMPONENTS Widgets Gui Core Svg QUIET)

WidgetsGuiCore 似乎是默认安装的,所以在你的情况下,安装 libqt5svg5-dev 应该可以解决这个问题(注意 -dev后缀)。如果这不能解决您的问题,请尝试从 find_package() 调用中删除 QUIET 修饰符以查看错误消息并希望有问题的组件(我假设您有 write-access 到 CMakeLists.txt 文件).

如果您不能或不想修改 vktrace/CMakeLists.txt,您可以通过检查 Qt5<component>_FOUNDQt5Svg_FOUND 来测试这些 Qt5 组件,或者,如果您想要更进一步,检查它们各自的 Config-模块。只需在某处创建一个新的 CMakeLists.txt,然后将以下内容粘贴到同一目录中 运行 cmake

CMakeLists.txt:

find_package(Qt5 COMPONENTS Widgets Gui Core Svg)

message("config for Widgets: '${Qt5Widgets_CONFIG}'")
message("config for Gui: '${Qt5Gui_CONFIG}'")
message("config for Core: '${Qt5Core_CONFIG}'")
message("config for Svg: '${Qt5Svg_CONFIG}'")

输出应该类似于:

config for Widgets: '/usr/lib/x86_64-linux-gnu/cmake/Qt5Widgets/Qt5WidgetsConfig.cmake'
config for Gui: '/usr/lib/x86_64-linux-gnu/cmake/Qt5Gui/Qt5GuiConfig.cmake'
config for Core: '/usr/lib/x86_64-linux-gnu/cmake/Qt5Core/Qt5CoreConfig.cmake'
config for Svg: '/usr/lib/x86_64-linux-gnu/cmake/Qt5Svg/Qt5SvgConfig.cmake'

空路径意味着 CMake 找不到该组件的 config-module,这可能意味着它没有安装。