c++ - Qt Creator 中依赖文件的自动复制

标签 c++ qt build-automation qt-creator

我使用 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/

相关文章:

c++ - 尽快将数据打包到数组中

c++ - 二进制字符串: unexpected end in precompiled chunk

c++ - Boost asio 自定义 HTTP 服务器读取 HTTP post 请求

c++ - 如何使用 Qt 在 Windows 上检查网络接口(interface)类型是以太网还是无线?

qt - 每次需要重新绘制时,如何在像素图中抓取 qwidget/render?

c++ - X11/Xlib.h 中缺少 XGetPixel() 吗?

javascript - 使用 QWebElements 填写网页表单

build-process - 在多个主机上编译

java - 有没有人在巴克明斯特有真实的经验?

在 TFS2012 上构建永远不会开始