复制exe文件到Qt构建目录

Copy exe file to Qt build directory

我正在尝试编写一个 Qt 应用程序,它将使用 QProcess 调用 ffmpeg.exe 来转换媒体文件。我想不出最好的方法来确保 ffmpeg.exe 文件从我的开发目录复制到构建目录,以便构建(和稍后部署)的应用程序可以访问它。

我在我的 .pro 文件 () 中看到了有关使用 INSTALLS 参数的信息,但是 qmake 文档说:

Note that qmake will skip files that are executable.

综上所述,应该如何确保我要用于 QProcess 的 exe 文件最终位于构建目录中(准备好稍后部署)?

您可以在构建应用程序时使用QMAKE_POST_LINK执行复制命令。只需将其放入您的 .pro 文件即可:

win32:{

    file_pathes += "\"$$PWD/Path/To/Files/ffmpeg.exe\""

    CONFIG(release, debug|release):{
        destination_pathes += $$OUT_PWD/release/
        destination_pathes += Path/To/Deploy/Directory
    }
    else:CONFIG(debug, debug|release):{
        destination_pathes += $$OUT_PWD/debug/
    }

    for(file_path,file_pathes){
        file_path ~= s,/,\,g
        for(dest_path,destination_pathes){
            dest_path ~= s,/,\,g
            QMAKE_POST_LINK += $$quote(xcopy $${file_path} $${dest_path} /I /Y $$escape_expand(\n\t))
         }
    }
}

您应该将要复制的文件的路径添加到 file_pathes 变量,将目标目录的路径添加到 destination_pathes 变量。然后在构建应用程序时将所有文件复制到所有目的地。

此处 ffmpeg.exe 在发布模式下被复制到应用程序构建和部署目录,在调试模式下被复制到构建目录。