3

我一直在 Visual Studio 2012 的引擎中工作,该引擎支持使用 Direct3D 9 和 Direct3D 11 进行渲染。但是我正在让一些新人来帮助该项目,他们更愿意在 Visual Studio 2010 上工作,因为那是他们的版本拥有和使用。所以我决定将项目转换为使用 VS2010 的 v100 平台工具集构建。

我快要让它工作了,但我不能包含 DirectXTK 和我正在使用的一些实用程序功能所必需的 DirectXMath.h。它是 Windows 8 SDK 的一部分并包含在 VS2012 中,但 VS2010 似乎没有找到它。

任何人都知道如何使用环境变量将其包含在内,以便它适用于团队中的每个人,并且也适用于 Win7?

谢谢。

4

1 回答 1

3

要让新队友能够在 VS2010 中编写代码,您有以下几种选择:

  1. 您无需将平台工具集更改为旧的工具集并重写您的代码库。VS2010 开发者只需安装 Windows 8 SDK,并使用 v110 工具集。为了帮助他们,请按照本文所述在项目属性中配置“VC++ 目录” (将指向旧 Windows SDK 的宏变量更改为新 Windows SDK 的显式位置):

    • 在“可执行目录”中替换$(WindowsSdkDir)bin with$(ProgramFiles)\Windows Kits\8.0\bin\x86`
    • 在“包括目录”$(ProgramFiles)\Windows Kits\8.0\Include\um;$(ProgramFiles)\Windows Kits\8.0\Include\shared中,在开头添加并删除$(WindowsSdkDir)include
    • 在“库目录”中替换$(WindowsSdkDir)lib$(ProgramFiles)\Windows Kits\8.0\lib\win8\um\x86
    • 在“排除目录”中替换$(WindowsSdkDir)include$(ProgramFiles)\Windows Kits\8.0\Include\um;$(ProgramFiles)\Windows Kits\8.0\Include\shared
    • 定位时x64,替换x86x64
  2. 如果您真的想将工具集从 v110 降级到 v100,那么您将需要使用旧的独立DirectX SDK。之前,Windows SDK 和 DirectX SDK 是分开的。它们从 Windows 7 SDK 开始合并。合并时,微软决定删除一些东西并重命名一些文件,例如,独立 SDK 包含#include <xmmath.h>.

  3. 您可以将两者结合起来:创建多个项目/平台配置并通过#ifdefVS2010 配置将无法找到标头/编译的地方进行条件编译。例如,您可以在 VS2012 代码分支中使用 C++11 功能,但在 VS2010 分支中您只能使用 C++03 功能。

我更喜欢第一个选项,但由您决定。

PS据我记得,VS2012的项目文件(.vcxproj)不能在VS2010中打开(它只知道.vcproj),所以你不能分享它。您可能想要安装 VS2010,制作.vcproj和维护这两个文件。当您更改一个项目选项而忘记更改另一个项目选项时可能会很痛苦,所以要小心。此外,考虑将您的所有团队转移到单个 IDE,或至少单个构建系统(例如,CMake)。

快乐编码!

于 2013-08-18T15:34:25.473 回答