我正在尝试编写一个Qt应用程序,该应用程序将使用QProcess
调用ffmpeg.exe
来转换媒体文件。我无法找到确保将ffmpeg.exe
文件从我的开发目录复制到构建目录的最佳方法,以便构建的(以及以后部署的)应用程序可以访问它。
我已经在我的 .pro 文件 (https://stackoverflow.com/a/13168287) 中看到有关使用 INSTALLS
参数的信息,但 qmake 文档说:
请注意,qmake 将跳过可执行文件。
综上所述,应该如何确保我想用于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(nt))
}
}
}
应将要复制到变量的文件的路径添加到变量file_pathes
并将目标目录的路径添加到变量destination_pathes
。然后,在构建应用程序时,所有文件都将复制到所有目标。
在这里,ffmpeg.exe
被复制到发布模式下的应用程序构建和部署目录,以及调试模式下的构建目录。