Read this manual in English

Настройка сборки для Defold

Здесь мы приводим некоторые важные сведения о сборке, чтобы максимально упростить интеграцию с вашими расширениями.

Вот некоторые моменты, которые следует учитывать при создании расширения для движка Defold. Для получения более общих рекомендаций по разработке кроссплатформенного нативного кода, а также расширений/Lua APIs, пожалуйста, обратитесь к Нативные Расширения - Лучшие Практики.

C++ версия

В самом движке мы не используем C++ версии выше C++98. Хотя вы можете использовать более высокую версию для создания своего расширения, имейте в виду, что более высокая версия может содержать изменения ABI. Это может сделать невозможным использование вашего расширения в сочетании с другими расширениями в движке или в хранилище ассетов.

При создании библиотек (например, расширений) полезно придерживаться наименьшего целевого знаменателя.

Toolchain

Версии SDK

Для получения наиболее точного списка версий проверьте с помощью build.py.

  • Android: NDK r25b, Build Tools 33.0.1, Api Level 19 for armv7 and Api level 21 for arm64
  • iOS: iPhoneOS17.2.sdk
  • macOS: MacOSX14.2.sdk
  • Windows: WindowsKits 10.0, Microsoft Visual Studio 2022
  • Linux: Ubuntu 20.04, clang 17, locales, libssl-dev, openssl, libtool, autoconf, automake, build-essential, uuid-dev, libxi-dev, libopenal-dev, libgl1-mesa-dev, libglw1-mesa-dev, freeglut3-dev
  • Html5: Emscripten 3.1.55

C++ версия + ABI совместимость

  • Linux: clang 17
  • Android:clang using NDK r25b
  • Html5: Emscripten 3.1.55
  • Win32: Microsoft Visual Studio 2022 (clang 17 on build server)
  • iOS/macOS: apple-clang (clang 17 on build server)

Для iOS/macOS мы используем -miphoneos-version-min=11.0 и -mmacosx-version-min=10.13 соответственно.

Мы не указываем конкретную версию C++, поэтому используем версию по умолчанию каждого компилятора.

Win32 + Clang

Недавнее дополнение - возможность собирать сборки для Windows с помощью clang. Это позволяет ускорить сборку на наших серверах, а также оптимизировать наши сборки.

Статическая связка

Пользовательский движок построен с использованием статической связки. Основная причина заключается в том, что на iOS версии < 8 несколько исполняемых двоичных файлов в .ipa не допускаются в App Store.

Никаких исключений из C++

Мы не используем никаких исключений в движке. Они обычно не используются в игровых движках, поскольку данные (в основном) известны заранее, во время разработки. Удаление поддержки исключений C++ уменьшает размер исполняемого файла и улучшает производительность во время выполнения.