我一直在Visual Studio 2012中的一个引擎中工作,该引擎支持使用Direct3D 9和Direct3D 11进行渲染。然而,我正在找一些新人来帮助这个项目,他们更喜欢使用Visual Studio 2010,因为这是他们拥有和使用的版本。因此,我决定将该项目转换为使用VS2010的v100平台工具集构建。
我正在接近让它工作,但我不能包括DirectXMath.h,这是DirectXTK和我正在使用的一些实用程序函数所必需的。它是Windows8SDK的一部分,包含在VS2012中,但VS2010似乎找不到它
有人知道如何使用环境变量将其包括在内,以便它适用于团队中的每个人,并且在某种程度上也适用于Win7吗?
谢谢。
要让新队友能够在VS2010中编码,您有几个选项:
-
您不需要将平台工具集更改为旧工具集并重写代码库。VS2010开发人员只需安装Windows8SDK,即可使用v110工具集。为了帮助他们,如本文所述,在项目属性中配置"VC++目录"(将指向旧Windows SDK的宏变量更改为新Windows SDK的显式位置):
- 在"可执行目录"中,替换
$(WindowsSdkDir)
binwith
$(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
- 在"可执行目录"中,替换
-
如果真的想将工具集从v110降级到v100,那么您需要使用旧的独立DirectX SDK。以前,Windows SDK和DirectX SDK是分开的。它们是从Windows7 SDK开始合并的。合并时,Microsoft决定删除一些内容,并重命名了一些文件,例如,独立SDK在
#include <xmmath.h>
中包含数学。 -
您可以将两者结合起来:创建多个项目/平台配置,并通过
#ifdef
进行实现条件编译,其中VS2010配置将无法找到标头/编译。例如,您可以在代码的VS2012分支中使用C++11功能,但在VS2010分支中,您只能使用C++03功能。
我更喜欢第一种选择,但由你自己决定。
附言:据我记忆所及,VS2012(.vcxproj
)的项目文件无法在VS2010中打开(它只知道.vcproj
),因此您无法共享它。您可能需要安装VS2010,制作.vcproj
并维护这两个文件。当你在一个项目中更改项目选项,而忘记在另一个项目上更改时,这可能会很痛苦,所以要小心。此外,考虑将所有团队转移到单个IDE,或者至少转移到单个构建系统(例如,CMake)。
编码快乐!