Qt程序部署

时间:2015-06-24 01:35:17

标签: qt deployment

在我的一个程序中,我使用QWebView加载和打印由HTML文档制作的报告。因此,在部署时,我会复制这些库,以及所有其他相关的Qt库:

  • Qt5WebKit.dll
  • Qt5WebKitWidgets.dll
  • Qt5PrintSupport.dll
  • 插件/ printsupport / windowsprintersupport.dll

在目的地机器上测试后,我发现打印不起作用。感谢Dependency Walker我得到了所有错过的图书馆。这是清单:

  • Qt5Multimedia.dll
  • Qt5Positioning.dll
  • Qt5MultimediaWidgets.dll
  • Qt5Qml.dll
  • Qt5Quick.dll
  • Qt5Sensors.dll
  • Qt5OpenGL.dll

好的,我可以理解它为什么要Qt5Multimedia.dll。浏览器可以播放声音等但是QML!为什么我需要所有这些与QML相关的库?我既不使用OpenGL也不使用传感器或定位。所以在我的情况下这是不必要的。

所以我的问题 - 有没有办法只部署我需要的库?当然,让程序工作。

1 个答案:

答案 0 :(得分:1)

我建议您使用windeployqt.exe

来自docs

  

可以在QTDIR / bin / windeployqt中找到Windows部署工具。它   旨在自动创建可部署文件夹的过程   它包含所有库,QML导入,插件,翻译等   需要从该文件夹运行该应用程序。这习惯了   为Windows运行时创建沙箱或为其安装树   可以轻松捆绑的Windows桌面应用程序   安装程序。

我就是这样做的:

cd [my program dir]
mkdir RELEASE
cd RELEASE
copy ..\"progname.exe" .
set QTDIR=C:\Qt\Qt5.4.1\5.4\mingw491_32\bin
call %QTDIR%\qtenv2.bat
windeployqt --force "progname.exe"

您可以通过将[my program dir]更改为您的应用程序的文件夹(包含.exe文件),QTDIR到您的Qt MinGW文件夹(这就是我使用的)和{ {1}}带有可执行文件的名称。

它将使用您的可执行文件和所需的Qt库(.dll等)创建一个progname.exe目录。