Сборка исходников для Linux/BSD
Зависимости, SCons, подготовка C# и диагностика результата.
Здесь описана сборка исходников Reckfell 1.0.0 для Linux/BSD. Для упаковки игры готовым редактором используйте экспорт Linux. Команды ниже — инструкции настройки; в этом проходе движок для Linux/BSD не компилировался и не запускался.
Подготовьте хост
Работайте в Source с файлом SConstruct. Сборка требует Python 3.9+ и SCons 4.4+. Нужны компилятор/линкер с C++17 и заголовки/библиотеки выбранной архитектуры. Проверьте python3 --version, scons --version, c++ --version и pkg-config --version в том же терминале, где будете собирать.
Детектор платформы ожидает POSIX-хост, отличный от macOS, и pkg-config. Параметр platform=linuxbsd в Windows не создаёт Linux toolchain. BSD использует то же имя платформы, но зависимости соответствуют хосту; Linux-бинарник автоматически не становится BSD-бинарником.
Зависимости определяются опциями:
| Возможность | Что проверить |
|---|---|
| X11 | x11, xcursor, xinerama, xext, xrandr, xrender и xi при линковке через pkg-config |
| Wayland | wayland-scanner; библиотеки client/cursor/egl без динамических wrappers |
| Системные шрифты/звук/desktop | fontconfig, ALSA/PulseAudio, D-Bus и остальные включённые backend |
| Собственные системные библиотеки | Development-пакеты для каждого builtin_*=no |
| Доступность | Подходящий AccessKit C SDK в accesskit_sdk_path либо намеренная сборка accesskit=no |
use_sowrap=yes может использовать комплектные заголовки и динамическую загрузку библиотек; runtime-зависимости от этого не исчезают. В текущих исходниках отсутствие wayland-scanner отключает Wayland с предупреждением. Читайте предупреждения конфигурации, а не считайте успешную сборку доказательством сохранения всех возможностей. Имена пакетов зависят от OS/версии: устанавливайте development-пакет конкретной отсутствующей библиотеки вместо копирования неподписанной команды пакетного менеджера.
Соберите редактор с C#
Пример для x86_64 из Source:
scons platform=linuxbsd target=editor arch=x86_64 module_mono_enabled=yes -j4platform выбирает OS backend, target — редактор/шаблоны, arch — CPU результата. Для Clang добавьте use_llvm=yes. Другому CPU нужны соответствующие компилятор/sysroot/зависимости: одного arch недостаточно для кросс-сборки. -j4 — начальное ограничение заданий, не гарантия памяти или скорости. При нехватке памяти на компиляции/линковке уменьшайте jobs; у LTO отдельные затраты памяти.
Ожидаемый native-результат — в Source/bin. Имя также зависит от dev_build, precision и суффиксов модулей. Сохраняйте символы для отладки. Не используйте compiledb_gen_only=yes или vsproj_gen_only=yes вместо обычной сборки.
Одного native-бинарника недостаточно для C#. Модуль по умолчанию выключен: сохраняйте module_mono_enabled=yes в согласованных конфигурациях редактора и шаблонов. Нужен .NET SDK 10: сгенерируйте glue новым редактором, затем соберите его managed assemblies и локальные пакеты. RECKFELL_BINARY должен указывать на реальный новый файл, а не посторонний установленный редактор:
RECKFELL_BINARY="/absolute/Source/bin/reckfell.linuxbsd.editor.x86_64.mono"
"$RECKFELL_BINARY" --headless --generate-mono-glue modules/mono/glue
python3 modules/mono/build_scripts/build_assemblies.py --reckfell-output-dir=bin --push-nupkgs-local=bin/NuGet
"$RECKFELL_BINARY" --path /absolute/project --editorПуть — пример для этой конфигурации. Проверяйте успех каждой команды: старый файл в bin не подтверждает новую успешную сборку. Проверьте bin/ReckfellSharp, bin/NuGet и соответствующий SDK 1.0.0. В каталоге проекта нужен project.reckfell. Сохраняйте согласованные managed/native-артефакты, не смешивая результаты разных наборов возможностей.
Шаблоны и headless
Для игровых шаблонов соберите target=template_debug и target=template_release с согласованными platform, arch, precision и C#-модулем. Это отдельные результаты; редактор не является export template. Укажите нужные custom templates в export preset и проверьте полученную игру на целевой OS.
--headless — режим запуска, не отдельный target и не доказательство удаления графических/системных зависимостей при сборке. Он не подтверждает GPU-рендеринг. Скомпилированный бинарник не лишён зависимостей: проверьте libc/ABI, динамические библиотеки, драйверы и .NET-компоненты вашей конфигурации. Проверяйте минимальную реально поддерживаемую OS; одна сборка не доказывает совместимость со всеми дистрибутивами.
Разберите первую ошибку
| Ошибка | Следующее действие |
|---|---|
| SConstruct не найден | Собирайте из Source |
| Библиотека не найдена через pkg-config | Установите development-файлы целевой архитектуры; проверьте PKG_CONFIG_PATH и sysroot |
| После сборки нет Wayland | Проверьте обнаружение scanner и предупреждения конфигурации |
| C++ собрался, C# недоступен | Проверьте опцию модуля, .NET SDK 10, glue и сборку assemblies/packages |
| После ошибки остался бинарник | Сверьте первую ошибку, код завершения и время результата |
| Здесь работает, на другой машине нет | Проверьте там архитектуру, ABI и runtime-зависимости |
Опции исходников и стадии C#-сборки сверены; сохранённые Windows CLI-проверки подтверждают только семантику --path. Компиляция Linux/BSD, установка зависимостей, рендеринг, экспорт и распространение не проверены. Source, установленный Runtime и SDK не изменялись.