我使用 Qt Creator 2.2.1 和 Qt 4.7.4(32 位)构建了一个程序,其输出是可执行文件。使用 DependencyWalker 打开 exe 显示该 exe 使用以下 DLL:
- KERNEL32.DLL
- MSVCRT.DLL
- MINGWM10.DLL
- LIBGCC_S_DW2-1.DLL
- QTCORE4.DLL
- QTGUI4.DLL
我希望在构建后所有依赖文件(在某些其他项目中可能不同)除了 Windows 特定文件(上面列表中的前两个)被自动复制到目录中exe所在的位置。
如何不使用命令行脚本在 Qt Creator 或 Qt 系统中执行此操作?谢谢。
最佳答案
在 QT 5.3 中,您或许可以使用 windeployqt
qt 工具自动复制所需的库。
在项目的 .pro 文件中添加以下内容应该可以解决问题,但您可能需要根据自己的具体情况进行一些调整。
isEmpty(TARGET_EXT) {
win32 {
TARGET_CUSTOM_EXT = .exe
}
macx {
TARGET_CUSTOM_EXT = .app
}
} else {
TARGET_CUSTOM_EXT = $${TARGET_EXT}
}
win32 {
DEPLOY_COMMAND = windeployqt
}
macx {
DEPLOY_COMMAND = macdeployqt
}
CONFIG( debug, debug|release ) {
# debug
DEPLOY_TARGET = $$shell_quote($$shell_path($${OUT_PWD}/debug/$${TARGET}$${TARGET_CUSTOM_EXT}))
} else {
# release
DEPLOY_TARGET = $$shell_quote($$shell_path($${OUT_PWD}/release/$${TARGET}$${TARGET_CUSTOM_EXT}))
}
# # Uncomment the following line to help debug the deploy command when running qmake
# warning($${DEPLOY_COMMAND} $${DEPLOY_TARGET})
# Use += instead of = if you use multiple QMAKE_POST_LINKs
QMAKE_POST_LINK = $${DEPLOY_COMMAND} $${DEPLOY_TARGET}
关于c++ - Qt Creator 中依赖文件的自动复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6771039/