如何使用CMake部署QWindowsIntegrationPlugin

Man*_*las 6 c++ qt cmake

我正在使用CMake构建Qt应用程序。我的项目可以编译,并且要感谢'fixup_bundle()',make install将所需的库复制到我的可执行文件旁边。大!

唯一的问题是,当我执行它时,我得到的恐惧是“此应用程序无法启动,因为它无法找到或加载Qt平台插件“ windows”。错误。

实际上,手动将qwindows.dll复制到可执行文件旁边的“ platforms”目录中可以解决此问题。现在,如何告诉CMake自动执行此操作?

Qt没有太多信息:

插件也可用作CMake中的导入目标。Qt Network,Qt SQL,Qt GUI和Qt Widgets模块具有关联的插件。它们在Qt5_PLUGINS变量中提供了插件列表。

好吧,我想我必须使用Qt5 :: QWindowsIntegrationPlugin,它应该是导入的目标。那就是我迷路的地方。

我知道(好吧,至少我至少知道),fixup_bundle()会查看可执行文件以查找其依赖项。但是,尽管事实是我将可执行文件链接到QWindowsIntegrationPlugin,但没有任何痕迹。因此,fixup_bundle()不会将qwindows.dll复制到我的输出路径中。

除了文件的手动副本外,我找不到适合该问题的CMake友好答案。

谢谢你的帮助。

Rob*_*ert 3

Just ran into the same issue. Here is how I resolved it in my CMake install script:

# QWindowsIntegrationPlugin is part of the Gui component
find_package(Qt5 COMPONENTS Gui REQUIRED)

install(
    FILES "$<TARGET_FILE:Qt5::QWindowsIntegrationPlugin>"
    DESTINATION bin/platforms
)
Run Code Online (Sandbox Code Playgroud)