【问题标题】:DirectXMath and Win8 SDK in VS2010 projectVS2010项目中的DirectXMath和Win8 SDK
【发布时间】:2013-08-18 08:00:24
【问题描述】:
我一直在使用 Visual Studio 2012 中的一个引擎,该引擎支持使用 Direct3D 9 和 Direct3D 11 进行渲染。但是,我正在让一些新人来帮助该项目,他们更愿意在 Visual Studio 2010 上工作,因为那是他们拥有和使用的版本。所以我决定将项目转换为使用 VS2010 的 v100 平台工具集构建。
我已经接近让它工作了,但我不能包含 DirectXMath.h,这是 DirectXTK 和我正在使用的一些实用程序功能所必需的。它是 Windows 8 SDK 的一部分,包含在 VS2012 中,但 VS2010 似乎没有。
任何人都知道如何使用环境变量将其包含在内,以便它适用于团队中的每个人,并且也适用于 Win7?
谢谢。
【问题讨论】:
标签:
windows-8
directx
direct3d
directxmath
【解决方案1】:
要让新队友能够在 VS2010 中编写代码,您有多种选择:
-
您无需将平台工具集更改为旧的工具集并重写您的代码库。 VS2010 开发者只需安装 Windows 8 SDK,并使用 v110 工具集。为了帮助他们,请按照this article 中的说明在项目属性中配置“VC++ 目录”(将指向旧 Windows SDK 的宏变量更改为新 Windows SDK 的显式位置):
- 在“可执行目录”中替换
$(WindowsSdkDir)binwith$(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 时,将 x86 替换为 x64
如果您真的想要将工具集从 v110 降级到 v100,那么您需要使用旧的独立版 DirectX SDK。之前,Windows SDK 和 DirectX SDK 是分开的。它们从 Windows 7 SDK 开始合并。合并的时候,微软决定删除一些东西,还重命名了一些文件,例如独立SDK包含#include <xmmath.h>中的数学。
您可以将两者结合起来:创建多个项目/平台配置并通过#ifdef 实现条件编译,其中 VS2010 配置将无法找到标头/编译。例如,您可以在 VS2012 代码分支中使用 C++11 功能,但在 VS2010 分支中您只能使用 C++03 功能。
我更喜欢第一个选项,但由您决定。
附:据我记得,VS2012(.vcxproj)的项目文件不能在VS2010中打开(它只知道.vcproj),所以你不能分享它。您可能想要安装 VS2010,制作 .vcproj 并维护这两个文件。当您更改一个项目选项而忘记更改另一个项目选项时可能会很痛苦,所以要小心。此外,考虑将您的所有团队转移到单一 IDE,或至少单一构建系统(例如,CMake)。
编码愉快!