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, у вас есть несколько вариантов:

  1. Вам не нужно менять набор инструментов платформы на старый и переписывать свою кодовую базу. Разработчики 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
  2. Если вы действительно хотите понизить набор инструментов с v110 до v100, вам нужно будет использовать старый автономный DirectX SDK. Раньше Windows SDK и DirectX SDK были отдельными. Они были объединены начиная с Windows 7 SDK. При объединении Microsoft решила удалить некоторые вещи, а также переименовала некоторые файлы, например, автономный SDK содержит математические #include <xmmath.h>,

  3. Вы можете комбинировать: создание нескольких конфигураций проекта / платформы и условную компиляцию с помощью #ifdef где конфигурация VS2010 не сможет найти заголовки / скомпилировать. Например, вы можете использовать функции C++11 в ветке кода VS2012, но в ветке VS2010 вы используете только функции C++03.

Я бы предпочел первый вариант, но решать вам.

PS Насколько я помню, файлы проекта от VS2012 (.vcxproj) не может быть открыт в VS2010 (он знает только .vcproj), так что вы не можете поделиться этим. Возможно, вы захотите установить VS2010, сделайте .vcproj и поддерживать оба файла. Может быть больно, когда вы меняете параметры проекта в одном, и забыли изменить в другом, поэтому будьте осторожны. Также рассмотрите возможность переместить всю вашу команду в одну IDE или хотя бы в одну систему сборки (например, CMake).

Удачного кодирования!

Другие вопросы по тегам