QT 打包程序
windows:
一、qtcretor选择需要版本的编译器将程序编译成release版本的exe,将exe放到一个单独的文件夹。
二、从开始菜单打开qt命令行(需要与可执行程序的编译版本一致)
三、从命令行切换到exe所在路径,运行windeployqt命令。
3.1. 不含qml的程序: D:\DevelopApp\QT\5.10.1\5.10.1\mingw53_32\bin\windeployqt.exe L04Showapp_release.exe(若打包debug需要加--debug参数在windployqt.exe后面(Windows Kits\10\bin\10.0.XXXXX\x64\ucrt\ucrtbased.dll),但是一般不打包debug版本,容易出现非标库依赖缺失)
3.2. 含有qml的程序: D:\DevelopApp\QT\5.10.1\5.10.1\mingw53_32\bin\windeployqt.exe --qmldir xxx/Qt/xxx/msvc2019_64/qml L04Showapp_release.exe(windeployqt --qmldir QT对应版本安装目录中qml文件所在路径 exe名称)
四、若正确,则会自动将所需要的动态库等文件拷贝到exe当前路径。
五、如果他人使用,需要在自己编译环境下拷贝所有的动态库,然后一个个的移动,点击可执行程序看看是否能够运行。(在之前先去掉自己的环境变量试验)
msvc通关过上述步骤后运行失败。
1.打开QT命令行报错:Setting up enviroment for Qt usage...
解决办法:QT命令行(msvc_64,根据自己选择的msvc版本)输入call D:\DevelopPath\Vs2019\VC\Auxiliary\Build\vcvars64.bat。弹出以下弹窗
2.暴力解决
将D:\DevelopPath\QT15.2\5.15.2\msvc2019_64\bin下的所有xxx.dll(或xxxd.dll)复制到exe所在目录,并复制plugins(比较大可以删除不要的插件)、qml、resources、translation到exe所在目录。
3.报错,Unable to find dependent libraries of E:\Anaconda3\Library\bin\Qt5Widgetsd.dll : Cannot open ‘E:/Anaconda3/Library/bin/Qt5Widgetsd.dll’:
先将环境变量中类似这条路径:E:\Anaconda3\Library\bin,随便修改。打包后再改回来就行。