VS2010项目中的DirectXMath和Win8 SDK



我一直在Visual Studio 2012中的一个引擎中工作,该引擎支持使用Direct3D 9和Direct3D 11进行渲染。然而,我正在找一些新人来帮助这个项目,他们更喜欢使用Visual Studio 2010,因为这是他们拥有和使用的版本。因此,我决定将该项目转换为使用VS2010的v100平台工具集构建。

我正在接近让它工作,但我不能包括DirectXMath.h,这是DirectXTK和我正在使用的一些实用程序函数所必需的。它是Windows8SDK的一部分,包含在VS2012中,但VS2010似乎找不到它

有人知道如何使用环境变量将其包括在内,以便它适用于团队中的每个人,并且在某种程度上也适用于Win7吗?

谢谢。

要让新队友能够在VS2010中编码,您有几个选项:

  1. 您不需要将平台工具集更改为旧工具集并重写代码库。VS2010开发人员只需安装Windows8SDK,即可使用v110工具集。为了帮助他们,如本文所述,在项目属性中配置"VC++目录"(将指向旧Windows SDK的宏变量更改为新Windows SDK的显式位置):

    • 在"可执行目录"中,替换$(WindowsSdkDir) bin with$(ProgramFiles)\Windows Kits\8.0\bin\x86`
    • 在"包含目录"中,添加$(ProgramFiles)Windows Kits8.0Includeum;$(ProgramFiles)Windows Kits8.0Includeshared开始并删除$(WindowsSdkDir)include
    • 在"库目录"中将$(WindowsSdkDir)lib替换为$(ProgramFiles)Windows Kits8.0libwin8umx86
    • 在"排除目录"中,将$(WindowsSdkDir)include替换为$(ProgramFiles)Windows Kits8.0Includeum;$(ProgramFiles)Windows Kits8.0Includeshared
    • 针对x64时,将x86替换为x64
  2. 如果真的想将工具集从v110降级到v100,那么您需要使用旧的独立DirectX SDK。以前,Windows SDK和DirectX SDK是分开的。它们是从Windows7 SDK开始合并的。合并时,Microsoft决定删除一些内容,并重命名了一些文件,例如,独立SDK在#include <xmmath.h>中包含数学。

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

我更喜欢第一种选择,但由你自己决定。

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

编码快乐!

相关内容

  • 没有找到相关文章

最新更新