DirectXMath и Win8 SDK в проекте VS2010
Я работал над движком в Visual Studio 2012, который поддерживает рендеринг с Direct3D 9 и Direct3D 11. Однако я привлекаю новых людей для помощи в проекте, и они предпочли бы работать в Visual Studio 2010, потому что это версия, которую они владеть и использовать. Поэтому я решил преобразовать проект, который будет построен с использованием набора инструментов платформы VS100 v100.
Я близок к тому, чтобы заставить его работать, но я не могу включить DirectXMath.h, необходимый для DirectXTK и некоторых утилит, которые я использую. Он является частью Windows 8 SDK и включен в VS2012, но VS2010, похоже, не находит его.
Кто-нибудь знает, как включить его, используя переменные среды, чтобы он работал для всех в команде, и таким образом, чтобы он работал и на Win7?
Благодарю.
1 ответ
Чтобы новые товарищи по команде могли кодировать в VS2010, у вас есть несколько вариантов:
Вам не нужно менять набор инструментов платформы на старый и переписывать свою кодовую базу. Разработчики VS2010 могут просто установить Windows 8 SDK и использовать набор инструментов v110. Чтобы помочь им, настройте "Каталоги VC++" в свойствах проекта, как указано в этой статье (измените макропеременные, которые указывают на старый Windows SDK, на явные расположения нового Windows SDK):
- В "Исполняемые каталоги" заменить
$(WindowsSdkDir)
бункер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
заменитьx86
сx64
- В "Исполняемые каталоги" заменить
Если вы действительно хотите понизить набор инструментов с v110 до v100, вам нужно будет использовать старый автономный DirectX SDK. Раньше Windows SDK и DirectX SDK были отдельными. Они были объединены начиная с Windows 7 SDK. При объединении Microsoft решила удалить некоторые вещи, а также переименовала некоторые файлы, например, автономный SDK содержит математические
#include <xmmath.h>
,Вы можете комбинировать: создание нескольких конфигураций проекта / платформы и условную компиляцию с помощью
#ifdef
где конфигурация VS2010 не сможет найти заголовки / скомпилировать. Например, вы можете использовать функции C++11 в ветке кода VS2012, но в ветке VS2010 вы используете только функции C++03.
Я бы предпочел первый вариант, но решать вам.
PS Насколько я помню, файлы проекта от VS2012 (.vcxproj
) не может быть открыт в VS2010 (он знает только .vcproj
), так что вы не можете поделиться этим. Возможно, вы захотите установить VS2010, сделайте .vcproj
и поддерживать оба файла. Может быть больно, когда вы меняете параметры проекта в одном, и забыли изменить в другом, поэтому будьте осторожны. Также рассмотрите возможность переместить всю вашу команду в одну IDE или хотя бы в одну систему сборки (например, CMake).
Удачного кодирования!