1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-OpenTTD

Клонировать/Скачать
COMPILING.md 10 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 28.11.2024 13:34 5f84a64

Компиляция OpenTTD

Необходимые/необязательные библиотеки

OpenTTD использует следующие внешние библиотеки:

  • (рекомендуется) breakpad: создание минидампов при сбое;
  • (рекомендуется) zlib: (распаковка и упаковка) старых (0.3.0–1.0.5) сохранённых игр, загрузка контента, карт высот;
  • (рекомендуется) liblzma: (распаковка и упаковка) сохранённых игр (начиная с версии 1.1.0);
  • (рекомендуется) libpng: создание скриншотов и загрузка карт высот;
  • (необязательно) liblzo2: (распаковка и упаковка) старых (до 0.3.0) сохранённых игр.

Для Linux используются следующие дополнительные библиотеки:

  • (рекомендуется) libcurl: загрузка контента;
  • libSDL2: доступ к оборудованию (видео, звук, мышь);
  • libfreetype: загрузка общих шрифтов и их рендеринг;
  • libfontconfig: поиск шрифтов, разрешение имён шрифтов на реальные шрифты;
  • harfbuzz: обработка скриптов с написанием справа налево (например, арабский и персидский языки) (требуется libicu);
  • libicu: обработка скриптов с написанием справа налево (например, арабский и персидский языки), естественная сортировка строк.

Если вы создаёте выделенный сервер, вам не нужны последние четыре.

OpenTTD не требует наличия каких-либо библиотек, но без liblzma вы не сможете открыть большинство последних сохранённых игр и без zlib — большинство старых сохранённых игр или использовать систему загрузки контента.

Windows

Вам нужна Microsoft Visual Studio 2022 или более поздняя версия.

Вы можете скачать бесплатную версию Visual Studio Community Edition от Microsoft по адресу https://visualstudio.microsoft.com/vs/community/.

OpenTTD нужен Platform SDK, если он ещё не установлен. Это можно сделать во время установки Visual Studio, выбрав «Visual C++ MFC для x86 и x64» (и, возможно, «Visual C++ ATL для x86 и x64», в зависимости от вашей версии). Если нет, вы можете загрузить его как MS Windows Platform SDK (https://developer.microsoft.com/en-us/windows/downloads/windows-sdk).

Установите SDK, следуя инструкциям.

Зависимости для OpenTTD в Windows обрабатываются через vcpkg (https://github.com/Microsoft/vcpkg/). Сначала вам нужно установить vcpkg, следуя инструкции «Quick Start» из файла README (https://github.com/Microsoft/vcpkg/blob/master/README.md).

После этого вы можете установить необходимые зависимости. Мы рекомендуем использовать статические версии, и в настоящее время OpenTTD требуется следующее:

  • breakpad;
  • liblzma;
  • libpng;
  • lzo;
  • zlib.

Чтобы установить варианты x64 (64-битные) и x86 (32-битные), хотя необходим только один из них, вы можете использовать:

.\vcpkg install --triplet=x64-windows-static
.\vcpkg install --triplet=x86-windows-static

Вы можете открыть папку (как проект CMake). CMake будет обнаружен, и вы сможете скомпилировать оттуда. Если библиотеки установлены, но не найдены, вам необходимо установить VCPKG_TARGET_TRIPLET в параметрах CMake. Для Visual Studio 2022 также необходимо установить CMAKE_TOOLCHAIN_FILE. (Типичные значения показаны в примере командной строки файла проекта MSVC).

В качестве альтернативы вы можете создать файл проекта MSVC через CMake. Для этого либо скачайте CMake с сайта https://cmake.org/download/, либо используйте версию, которая поставляется с vcpkg. После этого вы можете запустить что-то похожее на это:

mkdir build
cd build
cmake.exe .. -G"Visual Studio 17 2022" -DCMAKE_TOOLCHAIN_FILE="<location of vcpkg>\vcpkg\scripts\buildsystems\vcpkg.cmake" -DVCPKG_TARGET_TRIPLET="x64-windows-static"

Измените <location of vcpkg> на место, где вы установили vcpkg. После этого в папке сборки находятся файлы проекта MSVC. MSVC может самостоятельно перестроить файлы проектов через проект ZERO_CHECK.

Все остальные платформы

Минимальная требуемая версия CMake — 3.16. По умолчанию это создаёт сборку Debug с включёнными утверждениями. Это гораздо более медленная сборка, чем релизные сборки.

mkdir build
cd build
cmake ..
make

Для получения дополнительной информации о том, как использовать CMake (включая создание релизных сборок), мы настоятельно рекомендуем прочитать их превосходное руководство (https://cmake.org/cmake/help/latest/guide/user-interaction/index.html).

Параметры CMake

Через CMake можно влиять на различные параметры, чтобы получить разные типы сборок.

  • -DCMAKE_BUILD_TYPE=RelWithDebInfo: создать релизную сборку. Это значительно быстрее, чем... Отладочная сборка, но с гораздо менее полезной информацией в случае сбоя.

  • -DOPTION_DEDICATED=ON: сборка OpenTTD без графического интерфейса. Полезно, если вы используете автономный сервер, так как для работы требуется меньше библиотек.

  • -DOPTION_USE_ASSERTS=OFF: отключить утверждения. Используйте с осторожностью, поскольку утверждения фиксируют первые признаки проблемы. В релизных сборках они по умолчанию отключены.

  • -DOPTION_TOOLS_ONLY=ON: собрать только инструменты вроде strgen. Сама игра не собирается. Полезно для кросс-компиляции.

Поддерживаемые компиляторы

Любой компилятор, поддерживаемый CMake и C++20, должен иметь возможность компилировать OpenTTD. Поскольку точный список компиляторов постоянно меняется, обратитесь к руководству компилятора, чтобы узнать, поддерживает ли он C++20, и к CMake, чтобы проверить поддержку вашего компилятора.

Компиляция базовых наборов

Чтобы перекомпилировать дополнительную графику, необходимую для игры с оригинальной графикой Transport Tycoon Deluxe, также потребуется GRFCodec (который включает NFORenum). GRFCodec можно найти по адресу: https://www.openttd.org/downloads/grfcodec-releases/latest.html.

Установленный GRFCodec может вызвать регенерацию файлов .grf, которые записываются в исходный каталог. Это может привести к изменению состояния репозитория, поскольку разные версии GRFCodec могут вызывать двоичные различия в результирующих файлах .grf. Также могли быть добавлены переводы для базовых наборов, которые ещё не включены в информационные файлы базового набора. Чтобы избежать такого поведения, отключите GRFCodec (и NFORenum) в кэше CMake (GRFCODEC_EXECUTABLE и NFORENUM_EXECUTABLE).

Настройки для разработчиков

Вы можете управлять некоторыми флагами напрямую через CXXFLAGS (также подойдёт любая комбинация этих флагов):

  • -DRANDOM_DEBUG: помогает при отладке рассинхронизации.
  • -fno-inline: избегает создания встроенных функций; это может значительно упростить отладку.
  • -O0: отключает все оптимизации; это может значительно упростить отладку.
  • -p: включает профилирование.

Всегда используйте чистую папку сборки, если меняете CXXFLAGS, иначе это значение будет кэшироваться. Пример использования:

CXXFLAGS="-fno-inline" cmake ..

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors-OpenTTD.git
git@api.gitlife.ru:oschina-mirror/mirrors-OpenTTD.git
oschina-mirror
mirrors-OpenTTD
mirrors-OpenTTD
master