VS Code: исходники C++ и IntelliSense
База команд компиляции, рабочая папка и диагностика без выдуманных defines.
VS Code для C++-исходников
Для игрового C# откройте проект игры и используйте руководство C#. Здесь настраивается C++-дерево движка с файлом SConstruct. VS Code не устанавливает компилятор, SDK и SCons вместе с расширением C/C++.
Открыть правильную папку
- Откройте
Source, где лежат SConstruct, core, scene, editor и platform. Если открыть родительскую папку, пути${workspaceFolder}в примере будут указывать не туда. - Используйте расширение Microsoft C/C++ и компилятор той же платформы/архитектуры, с которыми конфигурируется SCons. При выборе другого анализатора проверьте его отдельные настройки; конфигурация одного расширения не настраивает все остальные.
- Сохраните существующие файлы
.vscode: дополняйте нужную конфигурацию, а не удаляйте чужие tasks.json или launch.json ради нового примера.
Подключить команды компиляции
Нужен актуальный compile_commands.json из конфигурации именно этого дерева. Параметры compiledb и compiledb_gen_only описаны в обзоре IDE. Генерация базы не равна компиляции движка, но всё равно требует успешной конфигурации SCons.
Известное ограничение: текущие helper-функции methods.py импортируют отсутствующий в установленном SCons 4.11.1 модуль SCons.Entity. Изолированные вызовы завершаются ImportError. Полная генерация базы здесь не выполнялась. Не считайте приведённый JSON способом исправить этот сбой и не создавайте выдуманную базу вместо результата сборочной системы.
Если корректная база уже получена для вашей конфигурации, создайте или дополните Source/.vscode/c_cpp_properties.json:
{
"configurations": [
{
"name": "Reckfell Source",
"compileCommands": "${workspaceFolder}/compile_commands.json"
}
],
"version": 4
}Для файла с подходящей записью расширение использует команду из базы. Если записи нет, применяются базовые настройки; один существующий JSON не гарантирует правильную индексацию всех файлов. Выберите действительный compilerPath через C/C++: Edit Configurations (UI) для базовой конфигурации. Не копируйте номер Windows SDK и путь к MSVC с чужого компьютера. Официальное описание — настройка IntelliSense.
Не добавляйте TESTS_ENABLED, TOOLS_ENABLED или другие defines только ради исчезновения подчёркиваний. Они должны соответствовать реальной конфигурации. После изменения target, arch, модулей или исходников обновите базу. Сгенерированные заголовки также должны существовать; добавление ** в includePath их не создаёт.
Настроить сборку и запуск отдельно
Задача сборки должна вызывать команду, уже проверенную для вашей конфигурации, из правильного рабочего каталога. Действие «собрать текущий C++-файл» не собирает весь движок с его зависимостями. В tasks.json разделяйте команду и массив аргументов; схема задач и различия shell/process описаны в документации VS Code.
Нативный запуск настраивается отдельно от IntelliSense. Для launch.json выбирайте конфигурацию установленного адаптера и фактический бинарный файл с соответствующими символами. Не смешивайте поля разных адаптеров. Значение preLaunchTask должно совпадать с label существующей задачи. Поля конкретного адаптера — в справочнике Microsoft C/C++. Подключение отладчика в этом прогоне не проверялось.
Найти причину проблемы
| Симптом | Проверка |
|---|---|
| ImportError с SCons.Entity | Это подтверждённая проблема helper-функций; настройки IntelliSense её не исправляют. |
| Заголовок не найден | Рабочая папка, запись для соответствующего .cpp, пути компилятора/SDK и наличие сгенерированного файла. |
| Анализируется не та ветка C++ | Актуальность базы, выбранная конфигурация и другой активный configurationProvider. |
| Задача работает в одном терминале | Различия PATH и окружения compiler/toolchain; вывод задачи, а не только её exit code. |
| Индексация работает, сборка нет | Это разные операции: проверьте фактическую команду SCons и её первую ошибку. |
Пример JSON разобран и сверён с полями установленной схемы C/C++ Tools 1.34.4; это не полная JSON Schema-валидация или запуск IntelliSense. Имена параметров SCons сверены с исходниками, отказ helper-функций сохранён отдельно. Полная база, сборка, UI VS Code и нативная отладка не проверены. Движок не изменялся.