我一直在使用Visual Studio 2012中的引擎,它支持使用Direct3D 9和Direct3D 11进行渲染。但是,我得到了一些新人来帮助完成该项目,他们更愿意使用Visual Studio 2010,因为那是他们拥有和使用的版本。所以我决定将项目转换为使用VS2010的v100平台工具集构建。
我已经接近了它的工作但我不能包含DirectXMh.h,这是DirectXTK和我正在使用的一些实用程序函数所必需的。它是Windows 8 SDK的一部分,包含在VS2012中,但VS2010似乎没有找到它。
任何人都知道如何使用环境变量将其包含在内,以便它适用于团队中的每个人,并且也适用于Win7?
感谢。
答案 0 :(得分:3)
为了让新队友能够在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以来合并的。合并时,Microsoft决定删除一些内容并重命名一些文件,例如,独立SDK包含#include <xmmath.h>
中的数学。
您可以将两者结合起来:创建多个项目/平台配置并通过#ifdef
实现条件编译,其中VS2010配置将无法找到头文件/编译。例如,您可以在VS2012代码分支中使用C ++ 11功能,但在VS2010分支中,您只使用C ++ 03功能。
我更喜欢第一种选择,但由您来决定。
P.S。据我所知,VS2012中的项目文件(.vcxproj
)无法在VS2010中打开(它只知道.vcproj
),因此您无法共享它。您可能希望安装VS2010,生成.vcproj
并维护这两个文件。当你在一个项目中更改项目选项时会感到很痛苦,而忘记在其他项目中进行更改,所以要小心。另外,请考虑将您的所有团队迁移到单个IDE或至少单个构建系统(例如,CMake)。
快乐的编码!