Visual studio: копирование содержимого во время сборки независимо от изменений в cpp

Я работаю над игровым движком, который хранит контент (аудиофайлы, файлы конфигурации, текстуры и т. Д.) В подпапке «Контент» в проекте. Основные файлы хранятся в $ (ProjectDir) / Content и должны копироваться в отдельные целевые каталоги («Debug / Content» и «Release / Content») при каждом изменении основных файлов.

Я использую событие после сборки, которое работает довольно хорошо:

XCOPY «Содержимое $ (ProjectDir)» «Содержимое $ (TargetDir)» / I / D / E / C / Y

К сожалению, это работает только если сборка & происходит соединение, т. е. мне нужно «прикоснуться» к некоторому файлу .cpp, чтобы запустить его, иначе VS никогда не выполнит команду XCOPY после сборки.

Есть ли способ заставить его всегда запускать команды в Build (F6) или Run (F5)? Или, может быть, лучший способ обработки файлов содержимого в проекте? Надеясь быстро настроить файлы содержимого, а затем запустить игру для предварительного просмотра.

Это в Visual Studio 2012 Professional.

3

Решение

Изменить: Предыдущая версия моего ответа была технически правильной, но не так легко настроить, как этот.

Откройте файл .vcxproj и включите эти строки в нижней части:

<Target Name="CopyContent" AfterTargets="Build">
<ItemGroup>
<ContentFiles Include="ContentFiles/*.png" />
</ItemGroup>
<Copy DestinationFolder="Debug/Content/"SkipUnchangedFiles="True"SourceFiles="@(ContentFiles)"UseHardlinksIfPossible="True" />
</Target>

Это скопирует все измененные файлы, независимо от состояния других ваших исходных файлов (т. Е. Даже если вам не нужно компилировать какой-либо код, MSBuild все равно будет следить за тем, чтобы ваши файлы содержимого были обновлены).

3

Другие решения

ХОРОШО! Нашел решение этой проблемы — используя какой-то неясный синтаксис MSBuild. Основано на ответе Моссвальда и некоторых исследованиях онлайн.

<Target Name="CopyContent" AfterTargets="Build">
<ItemGroup>
<DeployFileGroup
Include="**\*.json;**\*.png;**\*.wav;**\*.mp3;" />
</ItemGroup>
<Copy SourceFiles="@(DeployFileGroup)"DestinationFiles="@(DeployFileGroup->'$(TargetDir)%(RecursiveDir)\%(Filename)%(Extension)')"SkipUnchangedFiles="True" UseHardlinksIfPossible="True"/>
</Target>
2

По вопросам рекламы [email protected]