--- title: Нативные расширения - Подробнее brief: В этом руководстве описаны некоторые подробности о системе сборки, используемой для нативных расширений. --- # Настройка сборки для Defold Здесь мы приводим некоторые важные сведения о сборке, чтобы максимально упростить интеграцию с вашими расширениями. Вот некоторые моменты, которые следует учитывать при создании расширения для движка Defold. Для получения более общих рекомендаций по разработке кроссплатформенного нативного кода, а также расширений/Lua APIs, пожалуйста, обратитесь к [Нативные Расширения - Лучшие Практики](/manuals/extensions-best-practices). ## C++ версия В самом движке мы не используем C++ версии выше C++98. Хотя вы можете использовать более высокую версию для создания своего расширения, имейте в виду, что более высокая версия может содержать изменения ABI. Это может сделать невозможным использование вашего расширения в сочетании с другими расширениями в движке или в хранилище ассетов. При создании библиотек (например, расширений) полезно придерживаться наименьшего целевого знаменателя. ## Toolchain ### Версии SDK Для получения наиболее точного списка версий проверьте с помощью [build.py](./scripts/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++ уменьшает размер исполняемого файла и улучшает производительность во время выполнения.