Code::Blocks: внешний SCons и запуск движка
Custom Makefile workflow, target-команды и выбор бинарника.
Code::Blocks здесь используется для C/C++ исходников Reckfell 1.0.0. SCons остаётся системой сборки. Встроенный compiler IDE или автоматически созданный Debug target не заменяют настройки SConstruct.
Проект и файлы
Создайте Empty project и проверьте фактический путь .cbp: проект должен относиться к каталогу Source с SConstruct, а не ко всей папке установленного движка. Название проекта не обязано совпадать с именем каталога. Добавьте нужные исходники через Add files recursively; само добавление не задаёт compiler defines и include paths.
В Project → Properties включите This is a custom Makefile; в Project → Build options → Make commands замените стандартный вызов make командой SCons. Этот механизм описан в руководстве Code::Blocks, раздел 4.5. В Reckfell он используется для внешнего SCons, а не для генерации нового Makefile.
Команда сборки
Подготовьте compiler/SDK и зависимости. Для каждого target IDE задайте явные platform/target/arch и запускайте команду из Source. Пример Windows x86_64 editor:
scons platform=windows target=editor arch=x86_64 dev_build=yes debug_symbols=yesПоле Build project/target должно вызывать эту команду, а не старое $make -f $makefile $target. Проверьте также команды отдельного target и Rebuild: не оставляйте там стандартный make или вторую неполную конфигурацию. В журнале сборки должны быть ваши SCons arguments, а результатом — успешные compile/link выбранного target.
Если scons не найден, используйте доступный executable/launcher и окружение, в котором работает терминальная сборка. cmd /c нужен для соответствующего Windows launcher или shell-конструкций, а не как обязательный префикс любой команды на всех ОС. Путь с пробелами оформляйте по правилам используемого launcher; проверяйте реально исполненную строку в журнале.
Clean не нужен перед обычным Run. Если он настроен, вызывайте SCons --clean с теми же build options; не заменяйте его удалением bin или Runtime. Не включайте compiledb_gen_only=yes или vsproj_gen_only=yes в обычную сборку: это генерация метаданных, не executable.
Запуск и debugger
После успешной сборки в Project → Properties → Build targets выберите настоящий файл из Source/bin в Output filename. Отключите автоматическое добавление префикса/расширения, если оно меняет выбранный путь. Изменение этого поля указывает IDE, что запускать; оно не переименовывает SCons output.
Задайте параметры запуска: --path к каталогу с project.reckfell, плюс --editor для редактора. Execution working dir относится к запускаемой программе и не исправляет неверный working directory команды сборки. Проверьте отдельные настройки обоих этапов.
Выберите debugger, совместимый с compiler и форматом символов. Наличие MinGW в комплекте IDE не доказывает совместимость с установленным MSVC-бинарником. Нужны matching binary/symbols/source и выполняемая строка; при Attach сверяйте executable path и аргументы процесса. Запуск игры и запуск редактора могут создавать разные PID.
Диагностика
| Симптом | Что проверить |
|---|---|
| Выполняется make вместо SCons | Make commands проекта, отдельного target и Rebuild |
| SConstruct не найден | Команда сборки работает из Source |
| Код виден, но анализатор ошибается | Include paths/defines именно выбранной конфигурации; дерево файлов их не заменяет |
| Запускается старый файл | Output filename и свежий результат compile/link |
| Открывается Project Manager | Явный --path; --editor для редактора |
| Debugger не читает символы | Формат символов, compiler/toolchain и соответствие бинарнику |
Для C/C++ используйте Source/.clang-format. .editorconfig требует UTF-8 и LF; C/C++ используют табуляцию, Python/SConstruct/SCsub — пробелы. Не форматируйте весь репозиторий ради настройки IDE.
Границы проверки
Параметры SCons, схема имени бинарника и правила форматирования сверены с исходниками. Сохранена отдельная CLI-проверка --path установленного Runtime. Проект .cbp, GUI, build/rebuild/clean и debugger в Code::Blocks не запускались. Команда — пример конфигурации, не отчёт об успешной сборке. Source, Runtime и SDK не менялись.