2015-04-23 31 views
2

我正在嘗試編寫一個Qt應用程序,它將使用QProcess來調用ffmpeg.exe來轉換媒體文件。我無法弄清楚確保ffmpeg.exe文件從我的開發目錄複製到構建目錄的最佳方式,以便構建(以及稍後部署的)應用程序可以訪問它。將exe文件複製到Qt構建目錄

我看到關於我的.pro文件(https://stackoverflow.com/a/13168287)使用INSTALLS參數信息,但QMAKE文檔說:

注意,qmake可以跳過的可執行文件。

與上述所有,應該如何確保我想用於QProcess的exe文件最終在build目錄中(準備稍後部署)?

回答

3

在構建應用程序時,您可以使用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被複制到應用程序構建和發佈模式下部署目錄,並在調試模式下建立目錄。

+0

這看起來不錯,我沒有機會嘗試一下,但是一旦我確認了它的作用,我會將其標記爲答案。這隻適用於Windows? – jp36

+0

工程太棒了!同樣的事情會在其他平臺上工作嗎? – jp36

+1

在其他平臺上,您應該使用特定於平臺的命令。例如在Linux上,您應該使用'cp'來複制文件,如下所示:http://stackoverflow.com/questions/27745076/how-do-i-stop-qt-creator-placing-my-executable-in-a- debug-subdirectory/27745759#27745759 – Nejat