在Visual Studio 2012项目中,如何避免将QT DLL复制并粘贴到可执行目录中?

时间:2015-11-03 19:53:57

标签: qt visual-studio-2012 dll cmake

我正在使用Visual Studio 2012构建QT 5.5应用程序。

注意,我使用CMake生成Visual Studio项目和解决方案文件。

如果我构建Release解决方案,当我运行.exe时,我得到一个错误,抱怨没有找到dll。我可以通过将所需的dll复制并粘贴到项目的Release目录中来修复此错误。

如何避免复制和粘贴所需的DLL?

我是否需要在Visual Studio中指定DLL和/或其路径?

有没有办法使用CMake指定DLL和/或它们的路径?

1 个答案:

答案 0 :(得分:1)

为了提供Qt DLL以及您的应用程序,Qt自带的"com.lihaoyi" %%% "upickle" % "0.3.6", 工具可能就是您想要的。它知道Qt的插件等,可以复制相关的Qt DLL和插件。根据您要执行的操作,您可能希望将其作为构建后步骤,安装步骤或两者调用。还有适用于Mac OS X的scala> import upickle.default._ import upickle.default._ scala> write(1) java.lang.ClassCastException: java.lang.Double cannot be cast to scala.scalajs.js.Any at upickle.json.package$.write(package.scala:38) at upickle.Types$class.write(Types.scala:125) at upickle.default$.write(Api.scala:25) ... 35 elided 工具,但目前还没有相应的windeployqt工具。

为了处理任何非Qt DLL中的复制,CMake的BundleUtilities module可用于自动复制可执行文件/库所依赖的任何DLL。与Qt特定的部署工具不同,macdeployqt适用于所有平台,但它对于在运行时动态加载的Qt插件一无所知。同样,使用linuxdeployqt中的相关功能作为构建后和/或安装步骤。对于Qt4,DeployQt4模块在​​内部调用BundleUtilities,但CMake没有为Qt5提供等效模块,而是选择让Qt本身提供必要的支持。