Xcode: SCons и нативная отладка
Внешняя сборка, executable, аргументы проекта и breakpoint.
Xcode здесь используется как оболочка для SCons и нативного LLDB. Он не заменяет build-скрипты Reckfell и не является отладчиком C# по этой инструкции. Зависимости и подготовка managed-части описаны в сборке macOS.
Сначала соберите из терминала
Рабочая папка — Source, рядом с SConstruct. Для нативного редактора на Apple silicon:
command -v scons
scons platform=macos target=editor arch=arm64 dev_build=yes debug_symbols=yes -j4На Intel замените arch=arm64 на arch=x86_64; ограничения renderer и SDK смотрите в руководстве сборки. Ожидаемый файл базовой конфигурации — bin/reckfell.macos.editor.dev.arm64; дополнительные модули и параметры меняют суффиксы. Выбирайте фактически полученный файл, а не старое имя tools.64. Если SCons не работает в терминале, сначала исправьте его диагностику, а не настройки Xcode.
Внешняя сборка
Создайте проект с целью External Build System, если этот шаблон доступен в вашей версии Xcode. Храните вспомогательный .xcodeproj отдельно от исходников. Настройте:
| Поле | Значение |
|---|---|
| Build Tool | Абсолютный путь, выданный command -v scons. Терминальный alias не является исполняемым файлом. |
| Directory | Абсолютный путь к Source, где лежит SConstruct. |
| Arguments | platform=macos target=editor arch=arm64 dev_build=yes debug_symbols=yes -j4 либо ваша рабочая конфигурация. |
GUI-приложение может иметь другой PATH, чем терминал. При ошибке поиска Python, SCons или SDK проверьте абсолютные пути и выбранный Xcode. Не создавайте вторую обычную compile-цель, которая собирает все .cpp движка стандартными настройками Xcode: у неё не будет правильных generated headers, модулей и defines SCons.
Навигация по исходникам и успешная сборка — разные результаты. Если индексатор подсвечивает рабочий код как ошибочный, проверьте include paths, defines и generated headers для той же конфигурации. SCons умеет генерировать compile_commands.json для инструментов, которые его поддерживают:
scons platform=macos target=editor arch=arm64 dev_build=yes debug_symbols=yes compiledb=yes compiledb_gen_only=yesЭта команда генерирует базу команд; она не заменяет сборку. Само наличие JSON не означает, что Xcode импортировал его или что completion полностью настроен.
Запуск и breakpoint
В настройках scheme Xcode выберите для Run фактический executable из Source/bin, включите Debug executable и добавьте отдельными аргументами --editor, --path, абсолютный путь к папке проекта. В папке должен быть project.reckfell; передавайте папку, а не файл. Для запуска игры уберите --editor.
Эквивалент запуска редактора для указанной выше конфигурации:
./bin/reckfell.macos.editor.dev.arm64 --editor --path "/absolute/project"Это пример нативной сборки без C#. Для C#-проекта используйте подготовленную конфигурацию из руководства сборки macOS и её executable. Жёсткая ссылка с новым именем не требуется: схема должна запускать свежий файл нужной архитектуры. Для .app внутренний executable называется Contents/MacOS/Reckfell.
Поставьте breakpoint в platform/macos/reckfell_main_macos.mm на входе main. Успех — остановка в этом файле с доступными локальными данными, а не только появившееся окно игры. Если attach запрещён, см. отладку macOS. Если breakpoint не разрешается, проверьте архитектуру, символы и соответствие бинарника исходникам.
Настройки сверены с исходниками Reckfell 1.0.0. Нативный интерфейс Xcode, индексирование, сборка на Mac и LLDB в этой проверке не запускались.