我在Qt Creator中创建了一个简单的项目(使用Qt SDK 1.1.4安装),它在Qt Creator中运行得很好,但如果我浏览到Windows中的输出目录并双击EXE,我会得到如下错误:
The program can't start because QtCored4.dll is missing from your computer.
Try reinstalling the program to fix this problem.
这显然是因为Qt不在我的PATH中(我不希望它在我的计算机上有多个版本的Qt),并且Qt Creator / qmake没有将Qt DLL复制到项目输出中。
我想做的是使用qmake将必要的Qt文件复制到项目的输出目录-无论它在哪里。我该怎么做呢?
(我尝试在qmake中创建一个自定义目标,但我没有走得太远...)
**更新2016年7月19日:**只是为了澄清,上面的帖子是关于Qt 4的。在Qt 5上,你应该考虑调用windeployqt
。这个Qt 5工具将读取你的二进制文件,确定你需要哪些Qt 5运行时文件,并将它们复制到你的二进制目录。还要注意的是,它将修复特定于你的PC的Qt 5::Core库中的绝对路径-所以除非你想自己提供一个qt.conf
文件,否则基本上必须使用这个工具。
5条答案
按热度按时间wtlkbnrh1#
好吧,这里有一个丑陋的黑客:
以下是一些我不喜欢的地方:
我会接受另一个答案,如果有人可以清理这个好一点,例如通过缩短它和/或解决我的一些问题,或只是找到一个更好的方法一般。
k4emjkb12#
一个更干净的方法,但它需要在
make
之后执行make install
。它可以在Windows上工作,但需要在其他平台上进行调整。如果运行qmake只是为了调试,所有输出将进入./debug。如果只是为了发布,所有输出将进入./release。如果两者都是,则进入./bin。
我确实注意到在QtCreator中启用影子构建会导致可执行文件没有在DESTDIR中结束。
mf98qq943#
使用windeployqt复制依赖
或手动复制依赖
引用:http://doc.qt.io/qt-5/qmake-variable-reference.html#deployment
如果你需要识别跨平台的先决条件/依赖项,请看一下CMake的
getPrerequisites()
。它使用dumpbin
,objbin
,ldd
,otool
来识别依赖项。引用:https://cmake.org/cmake/help/v3.0/module/GetPrerequisites.html
mec1mxoz4#
我遇到了同样的问题,jwernerny's solution帮了我很大的忙。但是,我在Window 7上使用的是Shadow Build,它需要更多的tweeking。
我还需要根据当前配置设置
DESTDIR
。*.qml
文件 *,这就是我如何实现的:编辑:
因为我使用Shadow Build,所以我需要使用
$$OUT_PWD
来获取输出文件夹。ukdjmx9f5#
一个冗长但清晰的例子: