Доброго здравия, уважаемые читатели!
В прошлой статье мы обсуждали установку ESP-IDF и необходимых инструментов на компьютеры под управлением Windows и Linux, в том числе и расширения ESP-IDF для Visual Studio Code. Однако, как часто бывает, установка IDE (VSCode), плагина и фреймворка ESP-IDF — это лишь половина дела.
Если создать новый проект ESP-IDF (или PlatformIO) в Visual Studio Code (или даже открыть папку с существующим, но “очищенным” проектом), то с некоторой долей вероятности вы обнаружите, что автодополнение кода, подсказки и навигация по символам не работает или работает не корректно. На практике это проявляться так: анализатор кода (так называемый IntelliSense) отказывается “видеть” модули API и функции FreeRTOS, подчеркивая их красной волнистой линией; но при этом проект успешно собирается с помощью команды Build.
Если немного поспойлерить, то связано это с тем, что Visual Studio Code сам по себе (в отличие от своего собрата Visual Studio) не имеет встроенного анализатора кода С/С++ по умолчанию, так как изначально предназначен для работы с множеством самых разных языков программирования (которым понадобятся собственные анализаторы). Поэтому анализатор кода устанавливается отдельно, в виде расширения (плагина). Кроме того, установленный вами плагин ESP-IDF устанавливает все необходимые инструменты сборки, но не может полностью автоматически настроить систему автодополнения. Таким образом, в начале работы с проектом анализатор кода ничего “не знает” о специфических макросах и расположении библиотек фреймворка, что делает процесс написания кода достаточно неудобным.
Для решения этой проблемы вам может потребоваться добавить некоторые параметры в файлы конфигурации .vscode, а также сгенерировать файл compile_commands.json, который в явном виде описывает все команды компиляции. Забегая вперед – именно этот файл служит мостом между системой сборки ESP-IDF (CMake/idf.py) и движком IntelliSense, заставляя их работать синхронно.
Оглавление
- Анализатор кода IntelliSence
- Для чего нужен файл compile_commands.json
- Файл конфигурации c_cpp_properties.json
- Создание файла c_cpp_properties.json
Для начала давайте разберемся, что такое эта самая IntelliSense (и совсем чуть-чуть про её аналоги – просто для информации).
Анализатор кода IntelliSense
Анализатор кода — это сервис редакторов кода (IDE), например Visual Studio Code или CLion, который предоставляет программисту функции автодополнения кода, подсказки к символам (то есть функциям, переменным, константам и т.д.) и навигацию по символам (быстрый переход к нужному месту в коде по клику на переменной или функции). Этот функционал очень (очень!) облегчает работу с кодом, особенно с большими проектами. К слову, в Arduino IDE анализатор кода отсутствует как класс, чем и вызывает справедливое негодование пользователей.
Но здесь есть важный нюанс терминологии. Анализатор кода – это общее название подобных систем для различных языков программирования и IDE. А часто встречающееся название IntelliSense ® — это уже торговая марка (бренд) компании Microsoft. Так называется система автодополнения и анализа кода именно в продуктах Microsoft:
- Visual Studio (здесь он встроен в саму IDE)
- Visual Studio Code (через плагин C/C++ от Microsoft)
Поэтому в других редакторах, IDE или плагинах (если вы их используете) эта технология называется и может работать немного по-другому.
Visual Studio Code
Базовый редактор Visual Studio Code — это, по сути, просто «умный блокнот» с подсветкой синтаксиса. Из коробки он не имеет ни компилятора, ни анализатора кода, автодополнения, проверки ошибок на лету или возможности перейти к определению функции для языков вроде C/C++. Поэтому для удобной работы с кодом на C/C++ (в том числе и с кодом ESP-IDF / PlatformIO / Arduino) необходимо установить соответствующие плагины (или как их еще называют – расширения).
Пожалуй самый известный и популярный плагин анализатора кода на C/C++ называется “C/C++ for Visual Studio Code” – именно он добавляет поддержку языка C/C++ в Visual Studio Code, включая функции редактирования (IntelliSense) и отладки. Но следует понимать, что это расширение устанавливать только анализатор когда, но не включает собственно компилятор и (или) отладчик, поэтому вам потребуется установить эти инструменты отдельно или использовать те, которые уже установлены на вашем компьютере.
Главная проблема здесь в том, что указанный выше плагин Microsoft C/C++ не умеет сам “догадываться” о довольно сложной структуре ESP-IDF. Он в душе не знает, где лежат заголовочные файлы фреймворка, какие макросы определены и с какими флагами компилируется код. Поэтому для корректной работы с кодом ESP-IDF, PlatformIO или Arduino ему потребуется специальный файл, который называется compile_commands.json. Но не нужно создавать его “вручную” – это дело весьма неблагодарное, да и бесполезное – далее вы поймете почему. Основным же файлом конфигурации для плагина Microsoft C/C++ является другой файл – .vscode/c_cpp_properties.json, и ниже мы рассмотрим его более подробно.
CLion (JetBrains)
CLion — это полноценная интегрированная среда разработки для C/C++, и у неё есть собственный встроенный анализатор кода. То есть в отличие от VSCode он не является отдельным плагином — это встроенная часть самой IDE. Называется этот анализатор просто “Code Analysis” (инспекция кода), а его движок в современных версиях основан на Clangd.
Ключевое отличие Clangd от VSCode в том, что он не нуждается в compile_commands.json для анализа кода. Вместо этого он использует родную поддержку CMake. Поскольку ESP-IDF также использует CMake в качестве системы сборки, вы можете открыть проект в CLion как обычный CMake-проект. Всё, что от вас требуется — настроить в CLion тулчейн (компилятор) и указать путь к файлу окружения ESP-IDF (обычно это export.sh или export.bat). После этого автодополнение, навигация и проверка ошибок работают “из коробки” без дополнительных телодвижений.
Espressif IDE (на базе Eclipse)
Espressif IDE построенf на базе редактора кода Eclipse. Ранее Eclipse для разработки на C/C++ использовал набор плагинов под общим названием CDT (C/C++ Development Tooling). Внутри CDT есть компонент, который отвечает за анализ кода, и он называется Indexer (индексатор). Именно Indexer строит базу данных всех символов в проекте, чтобы обеспечивать навигацию и автодополнение.
Но если вы используете актуальную версию Espressif IDE (3.0.0+), то в нем сейчас используется другой анализатор кода — Clangd, аналогично тому, как он работает в современных версиях CLion. Для его настройки требуется лишь указать IDE путь к корректной версии ESP-IDF через стандартный менеджер инструментов IDE.
Поэтому вы используете для работы с кодом ESP-IDF что-то кроме Visual Studio Code – эта статья для вас будет бесполезна.
Для чего нужен файл compile_commands.json
Основную информацию о вашем проекте система IntelliSense черпает из файла compile_commands.json, так что вначале давайте попытаемся вместе разобраться, что это за файл такой и каково его обычное содержимое. Этот файл является стандартом де-факто для многих языковых серверов и инструментов статического анализа: его понимают Clangd, плагин Microsoft C/C++ для VSCode, CLion (через импорт), OCLint, Cppcheck и многие другие инструменты.
compile_commands.json — это файл в формате JSON, который служит единой информационной “картой” для всех инструментов, работающих с кодом на C/C++. Он содержит информацию о том, как именно должен компилироваться буквально каждый исходный файл в вашем проекте, включая фреймворк ESP-IDF и все подключенные к проекту библиотеки. Вместо того чтобы гадать, где лежат заголовочные файлы и какие макросы определены, анализатор кода просто читает этот файл и получает точные команды, которые использует компилятор при сборке проекта.
Структура файла
Файл представляет собой массив JSON-объектов. Каждый такой объект описывает команду компиляции для одного исходного файла – путь к папке проекта, команду запуска компилятора, входной и выходной файлы. Например:
{
"directory": "/полный/путь/к/папке/проекта",
"command": "xtensa-esp32-elf-gcc -c -I/путь/к/заголовкам -DFOO=1 ... /путь/к/файлу.c",
"file": "/полный/путь/к/файлу.c",
"output": "/полный/путь/к/файлу.o"
}
Поля каждого объекта:
| Поле | Тип | Обязательное? | Что означает |
|---|---|---|---|
directory |
Строка | Да | Абсолютный путь к директории, в которой должна выполняться команда компиляции (обычно это корень проекта или папка сборки). |
command |
Строка | Да (или arguments) |
Полная командная строка компилятора, которая используется для компиляции этого файла. Включает сам компилятор, все флаги, пути к заголовкам (-I), определения макросов (-D), флаги оптимизации (-O2), стандарт языка (-std=c11 / -std=c++17) и т.д. |
arguments |
Массив строк | Да (или command) |
Альтернатива command. Содержит ту же команду, но разбитую на массив аргументов. Например: [“xtensa-esp32-elf-gcc”, “-c”, “-I/путь”, “file.c”]. Удобнее для парсинга, но суть та же. |
file |
Строка | Да | Абсолютный путь к компилируемому исходному файлу (.c или .cpp). |
output |
Строка | Нет, но рекомендуется | Абсолютный путь к объектному файлу (.o), который создаётся в результате компиляции. |
Применительно к ESP-IDF этот файл создается автоматически системой сборки в каталоге ${config:idf.buildPath}/compile_commands.json и выглядит примерно так:
[
{
"directory": "/home/kotyara12/Projects/Espressif/libs_core_debug/build",
"command": "/home/kotyara12/.espressif/tools/xtensa-esp-elf/esp-14.2.0_20260121/xtensa-esp-elf/bin/xtensa-esp32-elf-gcc -DMBEDTLS_CONFIG_FILE=\\\"mbedtls/esp_config.h\\\" -DSOC_MMU_PAGE_SIZE=CONFIG_MMU_PAGE_SIZE -DSOC_XTAL_FREQ_MHZ=CONFIG_XTAL_FREQ -DUNITY_INCLUDE_CONFIG_H -I/opt/espressif/esp-idf/v5.5.4/esp-idf/components/xtensa/esp32/include -I/opt/espressif/esp-idf/v5.5.4/esp-idf/components/xtensa/include -I/opt/espressif/esp-idf/v5.5.4/esp-idf/components/xtensa/deprecated_include -I/home/kotyara12/Projects/Espressif/libs_core_debug/build/config <ВЫРЕЗАНО ОЧЕНЬ МНОГО -I ДЛЯ ЭКОНОМИИ МЕСТА> -fdiagnostics-color=always -o CMakeFiles/libs_core_debug.elf.dir/project_elf_src_esp32.c.obj -c /home/kotyara12/Projects/Espressif/libs_core_debug/build/project_elf_src_esp32.c",
"file": "/home/kotyara12/Projects/Espressif/libs_core_debug/build/project_elf_src_esp32.c",
"output": "/home/kotyara12/Projects/Espressif/libs_core_debug/build/CMakeFiles/libs_core_debug.elf.dir/project_elf_src_esp32.c.obj"
},
... еще несколько сотен таких-же вот записей ...
]
По большому счёту, его содержимое нам не очень интересно – этот файл предназначен для работы инструментов анализа кода. Да вручную создать такой файл было бы очень тяжко. И хотя информацию о вашем проекте IntelliSense черпает из файла compile_commands.json, но только в том случае, если вы явно указали на этот файл в настройках c_cpp_properties.json. Файл c_cpp_properties.json — это главный конфигурационный файл для IntelliSense в VSCode, и он должен ссылаться на compile_commands.json, который генерируется системой сборки автоматически. Вам не нужно создавать compile_commands.json вручную, достаточно убедиться, что в вашем файле .vscode/c_cpp_properties.json есть правильная строка с ссылкой на него.
Как создать файл compile_commands.json
При компиляции проекта. Файл compile_commands.json может быть создан автоматически при компиляции проекта. Созданием файла управляет директива CMAKE_EXPORT_COMPILE_COMMANDS. В системе сборки ESP-IDF, основанной на CMake, эту функцию можно активировать или деактивировать, добавив в корневой файл CMakeLists.txt вашего проекта следующую строку:
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
С помощью специальной команды. Даже если этот параметр не задан в CMakeLists.txt, вы можете сгенерировать нужный файл с помощью команды idf.py reconfigure или принудительно передав параметр при вызове CMake. Плагин ESP-IDF для VSCode также предоставляет команду ESP-IDF: Run idf.py reconfigure task для этой же цели.
При открытии проекта. Если compile_commands.json еще не был создан (например, если вы не запускали сборку проекта хотя бы один раз), плагин VSCode подскажет вам это при открытии проекта и вы сможете создать файл нажатием кнопки:
Файл конфигурации c_cpp_properties.json
Файл c_cpp_properties.json — это главный конфигурационный файл для плагина Microsoft C/C++ в VS Code, который настраивает работу системы IntelliSense. Он хранится в папке .vscode вашего проекта и предоставляет анализатору кода всю необходимую информацию о вашем проекте: какой компилятор используется, где искать заголовочные файлы и какие макросы определены.
Структура и основные поля
JSON-структура данного файла имеет три корневых раздела:
configurations: Самый важный раздел, который содержит объектов конфигурации, предоставляющих механизму IntelliSense информацию о вашем проекте и ваших предпочтениях для разных платформ (например, для Windows, Linux, macOS). VS Code автоматически выбирает нужную конфигурацию в зависимости от вашей операционной системы. Вы также можете добавить дополнительные конфигурации.env: Массив определяемых пользователем переменных, которые будут доступны для подстановки в конфигурациях с помощью стандартного синтаксиса переменных окружения:${<var>}или${env:<var>}. Это помогает избежать дублирования путей, если они часто повторяются.version: Версия файла, настоятельно рекомендуется не изменять это поле вручную. Оно нужно для того, чтобы расширение знало, как правильно обновлять файл конфигурации до новых версий (например добавить новые поля).
Внутри объекта configurations есть множество других полей для тонкой настройки. Ниже перечислены некоторые из них:
name(обязательное): Имя конфигурации, например"Win32","Linux"или"Mac". ИменаWin32,LinuxиMacявляются зарезервированными и автоматически подхватываются на соответствующих платформах – запомним этот факт, это может нам пригодится.includePath: Список папок, где IntelliSense будет искать заголовочные файлы (#include "myHeader.h") . Если в конце пути добавить/**, поиск будет выполняться рекурсивно во всех подпапках. Для ESP-IDF здесь обычно указывают путь к папкеcomponentsфреймворка и пути к локальным библиотекам, общим для всех проектов (если они есть).defines: Список макросов препроцессора, которые будут определены для IntelliSense, например["DEBUG", "ESP_PLATFORM"].compilerPath: Ключевое поле. Полный путь к вашему компилятору (например,/usr/bin/gccилиriscv32-esp-elf-gcc). Зная компилятор, расширение может автоматически запросить у него системные пути к заголовкам и встроенные макросы, что делает IntelliSense более точным.intelliSenseMode: Указывает, какой режим анализа использовать (msvc-x64,gcc-x64,clang-x64). Это должно соответствовать вашему компилятору. Если этот параметр не указан, расширение выберет значение по умолчанию для вашей платформы. Для ESP-IDF это обычноgcc-x64.cStandard/cppStandard: Устанавливают стандарт языка для IntelliSense (например,"c11"или"c++17"). Это помогает редактору кода правильно подсвечивать синтаксис и предлагать актуальные функции.compileCommands: Это поле имеет высший приоритет. Если здесь указать путь к файлуcompile_commands.json, IntelliSense будет использовать данные из него (пути к заголовкам, макросы), игнорируя все, что вы указали вincludePathиdefinesдля этих файлов.browse: Набор свойств, используемых, когда включен режим “нечеткого” IntelliSense (также называемого механизмом “просмотра”). Эти свойства также используются функциями перехода к определению/объявлению или когда механизм IntelliSense по умолчанию не может разрешить директивы#includeв исходных файлах.
Пример файла конфигурации ESP-IDF
Ниже приведен файл конфигурации, который создается автоматически средствами плагина ESP-IDF при создании нового проекта:
{
"configurations": [
{
"name": "ESP-IDF",
"compilerPath": "/home/kotyara12/.espressif/tools/xtensa-esp-elf/esp-15.2.0_20251204/xtensa-esp-elf/bin/xtensa-esp32-elf-gcc",
"compileCommands": "${config:idf.buildPath}/compile_commands.json",
"intelliSenseMode": "gcc-x86",
"includePath": [
"${workspaceFolder}/**"
],
"browse": {
"path": [
"${workspaceFolder}"
],
"limitSymbolsToIncludedHeaders": true
}
}
],
"version": 4
}
В этом примере:
compilerPathуказывает на тулчейн xtensa-esp32-elf-gcc.compileCommandsпредписывает IntelliSense использовать данные изcompile_commands.jsonв папкеbuild.includePathиbrowseдействуют как запасные варианты, если плагин не сможет прочитатьcompile_commands.jsonпо какой-либо причине. Например, если вы ещё ни разу не выполняли компиляцию проекта (или она была завершена с ошибкой).
Создание файла c_cpp_properties.json
Наконец мы добрались до главной цели нашей статьи – как создать файл c_cpp_properties.json, а также что можно изменить в файле конфигурации С/С++ проекта.
Файл c_cpp_properties.json всегда располагается в подкаталоге /.vscode вашего проекта. То есть настройки IntelliSence действуют только в пределах данного проекта, а для другого проекта вы должны использовать другой файл с возможно другими настройками.
Автоматическое создание файла c_cpp_properties.json
В отличие от compile_commands.json, файл c_cpp_properties.json не генерируется автоматически системой сборки. Это файл конфигурации для плагина Microsoft C/C++ в VSCode. Однако вам не нужно создавать его вручную — плагин ESP-IDF сделает это за вас с помощью команд ESP-IDF: New Project, ESP-IDF: Show Examples Projects или ESP-IDF: Add .vscode Configuration Folder. Например, если по какой-то причине файл c_cpp_properties.json не создался или поврежден, вы можете использовать команду ESP-IDF: Add .vscode Configuration Folder, чтобы восстановить его стандартную конфигурацию.
Эти команды гарантируют, что файл будет создан с правильными путями к вашему экземпляру ESP-IDF и тулчейну. Например на момент написания статьи создается такой файл:
{
"configurations": [
{
"name": "ESP-IDF",
"compilerPath": "/home/kotyara12/.espressif/tools/xtensa-esp-elf/esp-14.2.0_20260121/xtensa-esp-elf/bin/xtensa-esp32-elf-gcc",
"compileCommands": "${config:idf.buildPath}/compile_commands.json",
"intelliSenseMode": "gcc-x86",
"includePath": [
"${workspaceFolder}/**"
],
"browse": {
"path": [
"${workspaceFolder}"
],
"limitSymbolsToIncludedHeaders": true
}
}
],
"version": 4
}
Можно “оставить как есть”. Но лично на мой взгляд, этот вариант файла можно усовершенствовать, здесь ещё есть над чем поработать.
А также никто и ничто не мешает вам создать нужный файл вручную в текстовом редакторе или перенести ранее настроенный и “рабочий” файл из предыдущего проекта в новый, тем самым экономя время.
Добавим пути к каталогу компонентов ESP-IDF выбранной версии
Если вы создали проект в первый раз и ещё не выполняли его компиляцию, либо выполнили полную очистку проекта (то есть удаление всех сгенерированных системой сборки файлов), то с большой долей вероятности IntelliSence будет работать очень не устойчиво и может выделить большую часть файлов ESP-IDF как ошибочные включения. Я уже молчу про ваши собственные локальные библиотеки.
Происходит этого потому, что сразу после создания проекта или его очистки файл compile_commands.json просто отсутствует. И плагин IntelliSence вынужден учитывать параметры includePath и browse/path. А что у нас здесь настроено (см. выше)? Правильно – только текущая папка проекта со всеми её подпапками! И IntelliSence совершенно справедливо не находит файлы ESP-IDF.
Да, проблема может разрешиться “сама собой”, если вы скомпилируете проект и файл compile_commands.json будет создан. Или можно согласиться с предложением плагина и создать файл кнопкой:
А если в проекте ошибки или он сильно не доработан для компиляции? Тогда создать файл compile_commands.json не получится.
Для решения этого затруднения достаточно добавить путь к папке components используемой вами версии ESP-IDF, например так:
{
"configurations": [
{
"name": "ESP-IDF",
"compilerPath": "/opt/espressif/tools/riscv32-esp-elf/esp-14.2.0_20260121/riscv32-esp-elf/bin/riscv32-esp-elf-gcc",
"compileCommands": [
"${config:idf.buildPath}/compile_commands.json"
],
"includePath": [
"/opt/espressif/esp-idf/v5.5.4/esp-idf/components/**",
"${workspaceFolder}/**"
],
"browse": {
"path": [
"/opt/espressif/esp-idf/v5.5.4/esp-idf/components/",
"${workspaceFolder}"
],
"limitSymbolsToIncludedHeaders": true
}
}
],
"version": 4
}
Для windows это может выглядеть так:
{
"configurations": [
{
"name": "ESP-IDF",
"compilerPath": "C:\\Espressif\\tools\\xtensa-esp-elf\\esp-14.2.0_20251107\\xtensa-esp-elf\\bin\\xtensa-esp32s3-elf-gcc.exe",
"compileCommands": [
"${config:idf.buildPath}/compile_commands.json"
],
"includePath": [
"C:\\Espressif\\frameworks\\v5.5.4\\esp-idf\\**",
"${workspaceFolder}/**"
],
"browse": {
"path": [
"C:\\Espressif\\frameworks\\v5.5.4\\esp-idf\\",
"${workspaceFolder}"
],
"limitSymbolsToIncludedHeaders": true
}
}
],
"version": 4
}
Внимание! Этот метод требует ручного редактирование файла конфигурации, если вы решите сменить версию ESP-IDF через интерфейс плагина. Зато это гарантирует, что IntelliSence будет работать в любых условиях – даже если в вашем проекте есть ошибки и он не собирается нормально. Впрочем, можно всегда указать только “старшую” версию, чтобы использовать наиболее новый и полный набор функций API при отсутствии compile_commands.json.
Добавим пути к локальному каталогу общих компонентов
Сюда же можно добавить путь к локальному каталогу общих компонентов (суть библиотек), которые вы можете использовать сразу в нескольких проектах. Например так:
{
"configurations": [
{
"name": "ESP-IDF",
"compilerPath": "/opt/espressif/tools/riscv32-esp-elf/esp-14.2.0_20260121/riscv32-esp-elf/bin/riscv32-esp-elf-gcc",
"compileCommands": [
"${config:idf.buildPath}/compile_commands.json"
],
"includePath": [
"/opt/espressif/esp-idf/v5.5.4/esp-idf/**",
"${HOME}/Projects/Espressif/espidf-k12-libs/**",
"${workspaceFolder}/**"
],
"browse": {
"path": [
"${HOME}/Projects/Espressif/espidf-k12-libs",
"${workspaceFolder}"
],
"limitSymbolsToIncludedHeaders": true
}
}
],
"version": 4
}
Создаем кроссплатформенный файл конфигурации
Ну и наконец, если вы используете различные операционные системы в своей работе, можно использовать разные конфигурации для различных операционных систем. Это сильно облегчает работу, так как в разных ОС пути к различным папкам будут отличаться.
Для этого воспользуемся параметром name. Напомню: `Linux`, `Mac` и `Win32` — это специальные идентификаторы конфигураций, которые будут автоматически выбираться на этих платформах. В строке состояния VS Code отображается информация о том, какая конфигурация активна. Вы также можете щелкнуть по метке в строке состояния, чтобы изменить активную конфигурацию.
{
"configurations": [
{
"name": "Linux",
"compilerPath": "/opt/espressif/tools/riscv32-esp-elf/esp-14.2.0_20260121/riscv32-esp-elf/bin/riscv32-esp-elf-gcc",
"compileCommands": [
"${config:idf.buildPath}/compile_commands.json"
],
"includePath": [
"/opt/espressif/esp-idf/v5.5.4/esp-idf/components/**",
"${HOME}/Projects/Espressif/espidf-k12-libs/**",
"${workspaceFolder}/**"
],
"browse": {
"path": [
"/opt/espressif/esp-idf/v5.5.4/esp-idf/components/",
"${HOME}/Projects/Espressif/espidf-k12-libs",
"${workspaceFolder}"
],
"limitSymbolsToIncludedHeaders": true
}
},
{
"name": "Win32",
"compilerPath": "C:\\Espressif\\tools\\xtensa-esp-elf\\esp-14.2.0_20260121\\xtensa-esp-elf\\bin\\xtensa-esp32s3-elf-gcc.exe",
"compileCommands": [
"${config:idf.buildPath}/compile_commands.json"
],
"includePath": [
"C:\\Espressif\\frameworks\\v5.5.4\\esp-idf\\components\\**",
"C:\\Projects\\Espressif\\espidf-k12-libs\\**",
"${workspaceFolder}/**"
],
"browse": {
"path": [
"C:\\Espressif\\frameworks\\v5.5.4\\esp-idf\\components\\",
"C:\\Projects\\Espressif\\espidf-k12-libs\\",
"${workspaceFolder}"
],
"limitSymbolsToIncludedHeaders": true
}
}
],
"version": 4
}
Этот вариант позволит VSCode автоматически выбрать нужную конфигурацию в зависимости от того, в какой операционной системе вы сейчас работаете.
Надеюсь эта информация поможет вам решить проблемы в работе IntelliSence в Visual Studio code применительно к ESP-IDF, PlatformIO или даже Arduino ESP32. Ну а я с вами прощаюсь, всем добра и всех благ. С вами был Александр aka kotyara12.
Пожалуйста, оцените статью:
-= Каталог статей (список по разделам) =- -= Архив статей (плитки, все подряд) =-

