Здравствуйте. Что нужно прописать в .pro, чтобы скопировать некоторые файлы/папки к собранному бинарнику? Цель: просто нажать кнопку "построить" в креаторе для релиз-сборки и все указанные файлы сами скопируются. В моём примере нужно из папки resources/translations скопировать все *.qm, а также скопировать всю папку resources/data (содержит как файлы, так и папки) за исключением папки resources/data/items. При этом структура папок должна сохраниться (т.е. выходная папка будет содержать *.exe и папку resources с необходимым содержимым). В идеале — ещё и скопировать Qt'шные дллки.
В visual studio 2010 добился этого, дописав в конец файла .vcxproj следующее:
<Target Name="AfterBuild" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ItemGroup>
<QtDlls Include="$(QTDIR)\bin\QtCore4.dll;$(QTDIR)\bin\QtGui4.dll;$(QTDIR)\bin\QtNetwork4.dll" />
<TranslationFiles Include="Resources\translations\*.qm" />
<DataFiles Include="Resources\data\**\*.*" />
</ItemGroup>
<Copy SourceFiles="@(QtDlls)" DestinationFolder="$(OutDir)" />
<Copy SourceFiles="@(TranslationFiles)" DestinationFolder="$(OutDir)Resources\translations" />
<Copy SourceFiles="@(DataFiles)" DestinationFiles="@(DataFiles->'$(OutDir)Resources\data\%(RecursiveDir)%(Filename)%(Extension)')" SkipUnchangedFiles="true" />
<RemoveDir Directories="$(OutDir)Resources\data\items" />
</Target>
Первое, что я попробовал для .pro — это INSTALLS:
CONFIG(release, debug|release) {
appresources.path = $$DESTDIR
appresources.files += resources/translations/*.qm
appresources.files += resources/data/*
appresources.files -= resources/data/items
INSTALLS += appresources
}
но после построения релиз-сборки ничего не произошло. Я знаю, что это должно срабатывать при вызове make install — тогда получается это нужно самому дописывать в настройку проекта? И понимает ли jom/nmake это?
Дальше начал гуглить и наткнулся на ещё два решения:
http://stackoverflow.com/questions/3984104/qmake-how-to-copy-a-file-to-the-output (выглядит довольно ужасно) и
http://stackoverflow.com/questions/3851471/including-resource-files-in-qt-creator-build-directory (совсем другое дело, но требует платформо-зависимых вызовов команд — не большая трагедия, но всё же).
Для Mac OS X есть переменная QMAKE_BUNDLE_DATA, которая должна "срабатывать" и без make install (ещё не пробовал), а в Xcode там вообще копируемые файлы настраиваются через свойства проекта.