# Qt5 MinGW 版本的 windeployqt 发布 Qt 5 之后,附带的文件日益复杂,已经很难用手动拷贝dll这样的方法来整合发布程序,很依赖`windeployqt`这个东西。一般而言,标准用法是: `C:\Qt\5.15.2\mingw81_64\bin>windeployqt.exe --release C:\xxx\release\bars.exe` 这玩意儿我用了好多年了,但由于一直用的是预编译的vc版本的Qt,没有注意过一些问题。最近用了MinGW版本的Qt,发现有一些`feature`需要注意: ## 不要加--release标志 加`--release`标志的意思是强调这是个Release版本的程序,理论上这事儿应该是自动检测出来的,但我习惯加上。然而,MinGW版本中,如果加了`--release`,就会报`Unable to find the platform plugin.`错误然后停止,目前没有发现例外。 ## 记得带上--compiler-runtime vc写的程序,发布时一般带一个`vc++ redistribute`让用户自己安装。但是,MinGW没有这个配套设施,像`libgcc_s_seh-1.dll`这类文件一般是自己放在exe旁边打包。 `windeployqt`支持自动拷贝这几个文件,**前提是**gcc的`bin`路径存在于`PATH`并且加了`--compiler-runtime`标志。 当然,作为一种良好的编程习惯,我认为一般不要将编译器或者任何一个库的`bin`路径加入`PATH`——否则早晚会被坑。这种必须要用`PATH`的时候,可以在命令行环境下临时设置。 Powershell环境: `$env:path+="C:\Qt\Tools\mingw810_64\bin"` CMD环境: `set PATH=%PATH%;C:\Qt\Tools\mingw810_64\bin` 然后就可以大概这样调用: `C:\Qt\5.15.2\mingw81_64\bin>windeployqt.exe --compiler-runtime C:\Users\Win7VM\D ownloads\release\bars.exe`