使用 windeployqt 在构建后事件中复制 Qt dll 不起作用

Posted

技术标签:

【中文标题】使用 windeployqt 在构建后事件中复制 Qt dll 不起作用【英文标题】:Copying Qt dlls in post build event using windeployqt is not working 【发布时间】:2020-09-29 10:01:06 【问题描述】:

在我的系统上,Qt 位于C:\Libraries\Qt\5.12.6\VS2015\shared\x64(从源代码编译)。 我在 Visual Studio 中使用这个 Qt 版本和 Qt 插件没有任何问题。

现在我想使用“windeployqt”为我的应用程序自动复制所需的 Qt dll。

我添加了以下构建后事件:

cd "$(QTDIR)\bin\" 
windeployqt "$(OutDir)$(TargetName)$(TargetExt)"

结果:

cd "C:\Libraries\Qt\5.12.6\VS2015\shared\x64\bin\" 
windeployqt "C:\PathToSoftware\TestSoftware.exe"

但是,我收到以下错误:

执行:警告:无法读取 C:\Qt\5.12.6\install\win32-msvc2015\x64\mkspecs\qconfig.pri: 系统找不到指定的路径。找不到依赖 C:\Qt\5.12.6\install\win32-msvc2015\x64\bin\Qt5Core.dll 的库 :不能打开 'C:/Qt/5.12.6/install/win32-msvc2015/x64/bin/Qt5Core.dll':系统 找不到指定的路径。

如果我在命令提示符下运行“windeployqt”也会出现同样的问题:

C:\Libraries\Qt\5.12.6\VS2015\shared\x64\bin\windeployqt "C:\PathToSoftware\TestSoftware.exe"

任何想法如何解决这个问题? 谢谢。

【问题讨论】:

【参考方案1】:

文档是这样说的:windeployqt 需要在构建环境中运行才能正常运行。使用 Qt Installer 时,应使用脚本 QTDIR/bin/qtenv2.bat 进行设置。

所以在调用windeployqt之前尝试执行脚本QTDIR/bin/qtenv2.bat

【讨论】:

以上是关于使用 windeployqt 在构建后事件中复制 Qt dll 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

DLL 不会在构建后事件中复制

如何将 Qt 的 windeployqt 集成为 Visual Studio 构建工作流的一部分?

windeployqt 复制了很多不需要的文件

Qt 教你使用windeployqt工具来进行Qt的打包发布

如何在构建后事件中获取版本号

如何为windeployqt设置qml输出目录