2012-12-13 2 views
3

프로젝트의 컨텐츠 하위 폴더에 컨텐츠 (오디오 파일, 구성 파일, 텍스처 등)를 저장하는 게임 엔진에서 작업하고 있습니다. 마스터 파일은 $ (ProjectDir)/Content에 있으며 마스터 파일이 변경 될 때마다 개별 대상 디렉토리 ("Debug/Content"및 "Release/Content")에 복사해야합니다.Visual Studio : cpp 변경 사항과 관계없이 빌드 중 컨텐츠 복사

XCOPY "$ (PROJECTDIR) 내용" "$ (TARGETDIR) 내용"/ I/D/E/C/Y

:

나는 꽤 잘 작동하는 빌드 후 이벤트를 사용하고 있습니다

불행히도 빌드 & 링크가 발생하는 경우에만 작동합니다. 즉, 일부 .cpp 파일을 "터치"해야합니다. 그렇지 않으면 VS는 빌드 후 XCOPY 명령을 실행하지 않습니다.

Build (F6) 또는 Run (F5) 명령을 항상 실행하는 방법이 있습니까? 아니면 프로젝트에서 콘텐츠 파일을 처리하는 더 좋은 방법일까요? Content 파일을 빠르게 조정 한 다음 게임을 실행하여 미리 볼 수 있습니다.

이것은 Visual Studio 2012 전문가 용입니다.

답변

2

OK! MSBuild 구문을 사용하여 이에 대한 해결책을 찾아 냈습니다. moswald의 답변과 온라인에서의 조사를 바탕으로합니다.

<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> 
+0

불행히도 내 대답을 수락하지 못했습니다 :) – QuadrupleA

+0

Ah. 내가 하위 디렉토리를 가지고 있다는 것을 알고 있었다면, 나는 그것을 포함 시켰을 것이다. :) 좋은 직장은 알아낼 수있을만큼 비 직관적입니다. – moswald

+1

'SkipUnchangedFiles = "True"'가 없으면 빌드 할 때마다 명령이 실행됩니다. – moswald

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는 콘텐츠 파일이 최신 버전인지 확인합니다.

+0

Grr - 거의 없지만 상당히 - MSBuild "복사"작업은 콘텐츠 아래에 꽤 많이있는 하위 디렉터리를 복사하지 않습니다. XCOPY 명령으로 "Exec"작업을 시도했지만 정의 된 "CopyContent"대상은 .cpp 파일을 다시 수정 한 후에 XCOPY 만 실행합니다. 추가 정보를 가져 주셔서 감사합니다, 나는 계속 노력할 것입니다. – QuadrupleA

+0

Visual Studio에서 실제로 작동합니까? 나는 vs2013에 노력하고 있지만 명령 행에서 msbuild를 실행하는 경우에만 작동합니다. – kubivan

관련 문제