VladimirMakeev / D2ModdingToolset

Mss32 proxy DLL for Disciples 2
GNU General Public License v3.0
32 stars 13 forks source link

Info about build process and requirements #214

Closed Positiff88 closed 1 year ago

Positiff88 commented 1 year ago

Пожалуйста добавьте в проект информацию касательно процесса сборки решения. Какая нужна версия Visual Studio? Какой должен быть Стандарт языка C++, если это важно? Какими в свойствах проекта должны быть Версия пакета SDK для Windows и Набор инструментов платформы?

Уже несколько дней безрезультатно пытаюсь собрать проект чтобы внести свои правки. Зависимости вроде удалось собрать с горем пополам, а вот mss32 пока никак. Выдаёт кучу ошибок вида: Ошибка C2027 использование неопределенного типа "std::_Get_first_parameter<_Ty>" xmemory0 266

Мои параметры: Среда разработки - Visual Studio 2017 Стандарт языка - Стандарт ISO C++17 (/std:c++17) Версия пакета SDK для Windows - Visual Studio 2017 (v141) Набор инструментов платформы - 10.0.17763.0

VladimirMakeev commented 1 year ago

Я собирал проект с помощью Visual Studio 2019 и 2022. Стандарт языка, версию пакета SDK и набор инструментов платформы можно оставить по умолчанию как они заданы в файлах соотв. подпроектов. Достаточно скачать репозиторий вместе с сабмодулями (зависимостями) и нажать Build в Visual Studio. Зависимости соберутся сами. Также, стоит задать переменную окружения DISCIPLES2_PATH указав папку с игрой, это позволит быстро проверять внесенные изменения.

Positiff88 commented 1 year ago

Я пробовал собрать решение в Visual Studio 2019 таким образом: Клонирую сперва D2ModdingToolset. Проект скачивается, но с пустыми папками D2RSG, Detours, fmt, GSL, SLikeNet, sol2. Тогда я клонирую каждый из перечисленных проектов в соответствующую подпапку внутри D2ModdingToolset. После этого пытаюсь собрать решение mss32, но возникает ошибка: C1083 Не удается открыть файл включение: sol/sol.hpp: No such file or directory, ScenarioGenerator C:\Repos\D2ModdingToolset\D2RSG\ScenarioGenerator\src\generatorsettings.cpp 29

Может я что-то делаю не так? Как правильно скачать репозиторий вместе с зависимостями?

VladimirMakeev commented 1 year ago

Отвечаю на английском чтобы было понятно всем. Writing in english for @Haikyo-sama as well

  1. Clone repo and initialize all its submodules

    git clone
  2. Open mss32.sln using Visual Studio Community 2019 or 2022, don't change SDK or platform toolset:

    project upgrade
  3. Setup environment variable DISCIPLES2_PATH with path to your Disciples 2 Rise of the Elves 3.01 game. Use that variable in mss32 project settings so after build library will be placed there. Don't forget to rename original mss32.dll to mss23.dll

    common settings
  4. Setup debug path at working directory accordingly:

    debug settings
  5. Build mss32 project and run 'Debug', the game will start with debugger attached to our proxy dll. Any breakpoints that you set will work as expected:

    debug
Positiff88 commented 1 year ago

Build produces the following error: The BaseOutputPath/OutputPath property is not set for project 'mss32.vcxproj'. Please check to make sure that you have specified a valid combination of Configuration and Platform for this project. Configuration='Debug' Platform='Win32'. This error may also appear if some other project is trying to follow a project-to-project reference to this project, this project has been unloaded or is not included in the solution, and the referencing project does not build using the same or an equivalent Configuration or Platform. mss32 C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets 820

Positiff88 commented 1 year ago

Seems that this error happened because I've added DISCIPLES2_PATH system variable while my Visual Studio was already opened. Problem vanished when I restarted it.

Positiff88 commented 1 year ago

I've successfully build the project. Thanks for help.