c++ - Visual Studio : Copying content during build, 无论 cpp 更改如何

标签 c++ visual-studio visual-c++ msbuild

我正在开发一个游戏引擎,该引擎将内容(音频文件、配置文件、纹理等)存储在项目的 Content 子文件夹中。主文件位于 $(ProjectDir)/Content 中,只要主文件发生更改,就需要将其复制到各个目标目录(“Debug/Content”和“Release/Content”)。

我正在使用一个运行良好的构建后事件:

XCOPY "$(ProjectDir)Content""$(TargetDir)Content"/I/D/E/C/Y

不幸的是,它只有在构建和链接发生时才有效——也就是说,我必须“触摸”一些 .cpp 文件来触发它,否则 VS 永远不会执行构建后的 XCOPY 命令。

有没有办法让它始终在 Build(F6) 或 Run(F5) 上运行命令?或者有更好的方法来处理项目中的内容文件?希望能够快速调整内容文件,然后运行游戏进行预览。

这是在 Visual Studio 2012 专业版中。

最佳答案

编辑:我的答案的前一个版本在技术上是正确的,但设置起来远不如这个版本容易。

打开您的 .vcxproj 文件并在底部附近包含这些行:

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

这将复制任何更改的文件,而不管其他源文件的状态如何(即,即使您不必编译任何代码,MSBuild 仍会确保您的内容文件是最新的)。

关于c++ - Visual Studio : Copying content during build, 无论 cpp 更改如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13869870/

相关文章:

C++:将 %n 与 strftime 一起使用

c++ - 锁定设计模式的名称(具有 `internal' 方法的那个)

c++ - 如何将 char *argv[] 从 Main 函数指向表

c++ - 为什么在使用其他库时会出现 LNK4098 冲突 - 尝试在 MSVS2010 Express 中编译 C++ 时?

sql-server - Visual Studio 2010 中的数据库设计器

sql-server - SQL Server Express与Express LocalDB

c++ - 在 C++ 中使用异常基类导致应用程序崩溃

c++ - Windows 图形用户界面 C++ 编程

c++ - 将极坐标图像转换为笛卡尔图像

visual-c++ - Visual C++ boolean 错误