【问题标题】:Copy exe file to Qt build directory将exe文件复制到Qt构建目录
【发布时间】:2015-04-23 05:39:54
【问题描述】:

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

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

请注意,qmake 会跳过可执行文件。

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

【问题讨论】:

    标签: c++ qt qt5 exe qmake


    【解决方案1】:

    您可以在构建应用程序时使用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 在发布模式下被复制到应用程序构建和部署目录,在调试模式下被复制到构建目录。

    【讨论】:

    • 这看起来很棒,我还没有机会尝试它,但一旦我确认它有效,我会将其标记为答案。这仅适用于 Windows 吗?
    • 在其他平台上,您应该使用平台特定的命令。例如,在 Linux 上,您应该使用 cp 来复制文件,例如:stackoverflow.com/questions/27745076/…
    • 可以根据平台在.pro文件中设置条件。例如,win32:{...} 用于 Windows,linux:{...} 用于 Linux,mac:{...} 用于 Mac Os X。
    猜你喜欢
    • 1970-01-01
    • 2013-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多