我正在尝试使用 windeployqt --qmldir 方法部署应用程序。当从包含可执行文件的文件夹中运行命令时,所有依赖项都会被复制,一切看起来都很顺利。除了,当我单击应用程序文件在没有安装 Qt 的系统上运行它时,它根本不会启动。我得到忙碌的鼠标指针几秒钟,然后什么也没有。没有错误或任何东西。它在安装了 Qt 的机器上确实可以正常启动,但在另一台机器上却不行。我尝试使用相同的方法部署我的其他一些项目,它们都运行良好。然后我想到它可能是我正在使用的多个 qmldir “模块”。所以我拿了一个以前部署得很好的项目,向它添加了一个 qmldir 模块并再次部署它,aaaand 什么都没有。相同的 ”
-Top_Level_Project_Dir
-GUI_Construction
-fonts
-images
-javascript
-qml
-Construction_QML
-QML_Elements_Directory_1
- a bunch of qml files, some in their own folders
- qmldir
-QML_Elements_Directory_2
- a bunch of qml files, some in their own folders
- qmldir
-Singletons
- Globals
- qmldir
- Menus
- qmldir
-qml.qrc
- GUI Tests
我尝试过的 windeployqt 命令是:
windeployqt --qmldir C:\QtProjects\Top_Level_Project_Dir\GUI_Construction\qml <location of exe>
那是行不通的。也试过:
windeployqt --qmldir C:\QT\5.15.1\msvc2019_64\qml <location of exe>
这使得部署目录变得非常大,因为它复制了所有内容,但仍然无法正常工作。然后我尝试在 --qmlimport 选项之后插入导入路径(在 main.cpp 文件中使用 engine.addImportPath() 指定):
windeployqt --qmldir C:\QtProjects\Top_Level_Project_Dir\GUI_Construction\qml --qmlimport C:\QtProjects\Top_Level_Project_Dir\GUI_Construction\qml\Construction_QML (same for each qmldir) <location of exe>
这也没有奏效。它只是将我所有的 qml 文件复制到了部署目录,这是我无论如何都想避免的。