Read this manual in English

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

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

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

C++ версия

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

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

Toolchain

Версии SDK

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

  • Android: NDK 20r, Build Tools 23.0.2, Api Level 16 for armv7 and Api level 21 for arm64
  • iOS: iPhoneOS13.5.sdk
  • macOS: MacOSX10.15.sdk
  • Windows: WindowsKits 10.0, Microsoft Visual Studio 2019
  • Linux: Ubuntu 16.04, clang 9, libssl-dev, uuid-dev, libxi-dev, libopenal-dev, libgl1-mesa-dev, libglw1-mesa-dev, freeglut3-dev
  • Html5: Emscripten 1.39.16

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

  • Linux: clang 9
  • Android:clang using NDK r20
  • Html5: Emscripten 1.39.16
  • Win32: Microsoft Visual Studio 2019 (clang 9 on build server)
  • iOS/macOS: apple-clang (clang 9 on build server)

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

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

Win32 + Clang

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

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

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

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

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