Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将exe文件复制到Qt构建目录_C++_Qt_Qt5_Exe_Qmake - Fatal编程技术网

C++ 将exe文件复制到Qt构建目录

C++ 将exe文件复制到Qt构建目录,c++,qt,qt5,exe,qmake,C++,Qt,Qt5,Exe,Qmake,我正在尝试编写一个Qt应用程序,它将使用QProcess调用ffmpeg.exe来转换媒体文件。我想不出最好的方法来确保ffmpeg.exe文件从我的开发目录复制到构建目录,以便构建(以及以后部署)的应用程序能够访问它 我在我的.pro文件()中看到了有关使用安装参数的信息,但是qmake文档说: 请注意,qmake将跳过可执行的文件 以上所述,如何确保我要用于QProcess的exe文件在构建目录中结束(准备稍后部署)?您可以在构建应用程序时使用QMAKE\u POST\u LINK执行复制命

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

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

请注意,qmake将跳过可执行的文件


以上所述,如何确保我要用于
QProcess
的exe文件在构建目录中结束(准备稍后部署)?

您可以在构建应用程序时使用
QMAKE\u POST\u 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))
         }
    }
}
您应该将要复制到
文件路径
变量的文件的路径以及到目标目录的路径添加到
目标路径
变量。然后,在构建应用程序时,所有文件都将复制到所有目标


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

这看起来很棒,我还没有机会尝试它,但一旦我验证它是否有效,我会将其标记为答案。这是否仅适用于Windows?在其他平台上,应使用特定于平台的命令。例如,在Linux上,您应该使用
cp
来复制一个文件,例如:您可以根据平台在.pro文件中设置条件。例如,对于Windows使用win32:{…},对于linux使用linux:{…},对于mac Os X使用mac:{…}。