Как заставить windeployqt включать только необходимые модули?
Из-за проблем с некоторыми библиотеками Qt с лицензиями GPL (большинство из которых доступно 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 автоматически обнаруживал и добавлял только прямые зависимости. Есть ли способ ограничить количество развернутых модулей до минимума с помощью этой программы?
1 ответ
Оказывается, Qt53DQuick НЕ является библиотекой модулей QtQuick 3D. Qt 5.12.x не имеет модуля QtQuick 3D, а библиотеки DLL являются частью модуля Qt3D.