Скопируйте exe файл в каталог сборки Qt
Я пытаюсь написать приложение Qt, которое будет использовать QProcess
для вызова ffmpeg.exe
для преобразования медиафайлов. Я не могу понять, как лучше всего сделать так, чтобы файл ffmpeg.exe
был скопирован из моего каталога разработки в каталог сборки, чтобы построенное (а затем развернутое) приложение имело к нему доступ.
Я видел информацию об использовании параметра INSTALLS
в моем файле. pro (https://stackoverflow.com/a/13168287 ) но документы qmake говорят:
Обратите внимание, что qmake будет пропускать файлы, которые являются исполняемыми.
Учитывая все вышесказанное, как следует убедиться, что исполняемый файл, который я хочу использовать для QProcess
, находится в каталоге сборки (готов к развертыванию позже)?
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
копируется в каталоги сборки и развертывания приложений в режиме выпуска и в каталог сборки в режиме отладки. режим.