QT 程序打包
〇、前言
其实这个本来就没啥可写的东西,但是今天在打包 QML 程序时遇到了问题。上网搜解决办法,铺天盖地的全是错误信息。好在最后终于找到了一个明白老哥,才解决这个问题。
不得不说,国内这某 C 是真的恶心,错的都抄来抄去。真是垃圾堆里找垃圾,没用的东西···
所以,这里总结一下 QT 程序打包的相关问题。
最后,要感谢老哥的文章给了我帮助:
博主:为啥不吃肉捏
一、QWidget 程序打包
- 先找到项目的构建套件版本,并切换到 Release 模式,然后 Ctrl+Shift+B 进行构建项目(请注意区分 32bit 与 64bit,否则会出现 0xc00007b 等错误)。
将构建出来的可执行程序(这里以
FormatQuick.exe
为例)以及你程序运行需要的一些必要文件(例如:我这里依赖bin/ffmpeg.exe
)放到一个新的目录里(文件名无所谓)。按下 Win 键打开菜单,找到对应的 Qt CMD 程序,用“管理员身份”启动(可以避免一些权限问题)。
- 使用
cd "YOUR_PATH"
命令进入待打包程序所在根目录。 - 使用
windeployqt.exe YOUR_PROGRAM_NAME.exe
命令进行程序打包。可以参考下图:
二、QML 程序打包
基本与使用 Qt CMD 打包 QWidget 程序差不太多。
- 先找到项目的构建套件版本(这里以 Desktop Qt 5.15.2 MSVC2019 32bit 为例),并切换到 Release 模式,然后 Ctrl+Shift+B 进行构建项目(请注意区分 32bit 与 64bit,否则会出现 0xc00007b 等错误)。
- 将构建出来的可执行程序(这里以
eWeather.exe
为例)以及你程序运行需要的一些必要文件(例如:我这里依赖bin/WeatherAPIGet.exe
)放到一个新的目录里(文件名无所谓)。 - 按下 Win 键打开菜单,找到对应的 Qt CMD 程序,用“管理员身份”启动(可以避免一些权限问题)。
- 使用
cd "YOUR_PATH"
命令进入待打包程序所在根目录。 - 使用
windeployqt.exe YOUR_PROGRAM_NAME.exe -qmldir YOUR_QML_SOURCES_DIR
命令进行程序打包。可以参考下图:
注意:这里 -qmldir YOUR_QML_SOURCES_DIR
的 YOUR_QML_SOURCES_DIR 指的是你的项目中 qml.qrc 文件所在的文件夹路径(这里我指向的是 main.qml 的文件夹路径 / 更准确的是入口 qml 文件所在文件夹路径),切勿被网络上错综复杂的文章误导指向 Qt 安装目录下的 qml 文件夹!
这部分是我的推理,有问题可以评论区反馈一下,谢谢大家!
三、其他
在今天的打包过程中,我遇到个问题:
因为某些原因导致我的菜单中并没有对应的 Qt CMD 工具,从而导致了我必须使用系统的 CMD ,并自己手动配置环境。
其实也就是依赖环境变量,让 CMD 找到 windeployqt.exe
程序,实际上这是个不明智的选择。
所以,如果你也出现类似的问题了,可以试试卸载 Anaconda 并重新安装 Qt 试试。
经过检查可能原因如下:
因为我先安装了 Anaconda 后安装的 Qt,导致 Anaconda 的环境变量影响了 Qt 的安装,进而导致了一些问题。
我彻底卸载 Anaconda 和 Qt 后再重新安装 Qt 便解决了问题。
补充:下载 Qt Community 版
注意:如果 Qt Maintenance Tool 在下载过程中经常出现无法下载的情况,大多数是因为网络的原因。可以使用 CMD 命令启动程序,并切换下载源:
1 | .\qt-unified-windows-x64-4.5.2-online.exe --mirror https://mirrors.cloud.tencent.com/qt/ |
或者(请确保 CMD 当前环境目录在 Maintenance.exe 所在目录)
1 | .\MaintenanceTool.exe --mirror https://mirrors.cloud.tencent.com/qt/ |