由于担心某些具有 GPL 许可证的 Qt 库(大多数是 LGPL 可用的),我们删除了项目中大多数未使用的依赖项。运行windeployqt后:
windeployqt.exe --dir setup --compiler-runtime --release --qmldir ..\Qml ..\release\OUREXE.exe
我们得到以下日志:
Direct dependencies: Qt5Core Qt5Gui Qt5Network Qt5Qml Qt5Quick Qt5WebSockets Qt5Widgets Qt5WebEngineCore Qt5WebEngineWidgets Qt53DCore Qt53DRender Qt53DInput Qt53DExtras
All dependencies : Qt5Concurrent Qt5Core Qt5Gamepad Qt5Gui Qt5Network Qt5Positioning Qt5PrintSupport Qt5Qml Qt5Quick Qt5QuickWidgets Qt5WebSockets Qt5Widgets Qt5WinExtras Qt5WebEngineCore Qt5WebEngineWidgets Qt53DCore Qt53DRender Qt53DQuick Qt53DQuickRender Qt53DInput Qt53DAnimation Qt53DExtras Qt5WebChannel
To be deployed : Qt5Concurrent Qt5Core Qt5Gamepad Qt5Gui Qt5Network Qt5Positioning Qt5PrintSupport Qt5Qml Qt5Quick Qt5QuickWidgets Qt5SerialPort Qt5Svg Qt5WebSockets Qt5Widgets Qt5WinExtras Qt5WebEngineCore Qt5WebEngineWidgets Qt53DCore Qt53DRender Qt53DQuick Qt53DQuickRender Qt53DInput Qt53DAnimation Qt53DExtras Qt5WebChannel
如您所见,尽管 windeployqt 知道“需要”模块,但它似乎部署了所有 Qt 模块,甚至是未使用的模块。我知道可以使用“--no-”选项手动排除模块,但我希望 windeployqt 自动检测并仅添加直接依赖项。有没有办法通过这个程序将部署的模块限制在最低限度?