VS код выдачи ошибок заголовка для Arduino? Отсутствует официальный заголовок? - PullRequest
0 голосов
/ 08 сентября 2018

Я недавно начал разрабатывать для Arduino. Сначала я использовал Arduino IDE, но вскоре понял, что это не на высоте. Разработка была значительно медленнее с необходимостью перезапуска IDE время от времени. Я нашел VS Code с расширением Arduino, который я полюбил. Однако у меня есть несколько проблем, и я не уверен, как их решить.

Прежде всего, код выдает ошибки #include и просит меня обновить IntelliSense. Однако он собирает / загружает и работает отлично, он также находит классы и т. Д., Определенные в упомянутых включениях, поэтому он выглядит как-то ложно-положительным (то есть путь включен в настройки includePath). Чтение сообщения об ошибке также показывает, что у него есть проблемы с поиском заголовка, на который ссылается Arduino.h и который называется «avr / pgmspace.h». Я не уверен, связаны ли эти ошибки. pgmspace.h нигде не найти (он должен был быть включен в Arduino SDK).

Наконец, из-за ошибки #include все, что связано с этим конкретным заголовочным файлом, не будет выделено должным образом и будет просто серым текстом, который немного раздражает.

Кто-нибудь знает, как это исправить? Я на Mac между прочим.

Error messages

1 Ответ

0 голосов
/ 15 сентября 2018

Обновление : дополнительные библиотеки устанавливать не нужно. IntelliSense может работать с использованием только заголовков, установленных приложением Arduino, но некоторые другие могут помочь. Больше обновлений ниже.

При сборке VSCode используется SDK. Однако IntelliSense не может читать файлы SDK для работы (насколько я могу судить), что выбрасывает эти досадные ошибки и устраняет большинство возможностей завершения кода.

Необходимо настроить includePath и browse.path. includePath не включает рекурсив (но эта функция, похоже, скоро появится). browse.path является рекурсивным, но точное расположение заголовочных файлов в includePath все еще необходимо для функций IntelliSense. browse.path будет использовать Tag Parser для предоставления таких инструментов, как «лампочка», по которой вы можете щелкнуть, чтобы решить вашу проблему includePath. (Источник: В чем разница между "includePath" и "browse.path" в c_cpp_properties.json? )


Mac:

avr/pgmspace.h находится по адресу: /Applications/Arduino.app/Contents/Java/hardware/tools/avr/avr/include/avr/pgmspace.h. Он закодирован в библиотеки как avr/pgmspace.h; по этой причине нам нужно указать путь, по которому находится avr.

1. Установка homebrew-avr :

2. Отредактируйте c_cpp_properties.json:

"includePath": [
    "${workspaceFolder}/libraries",
    "/System/Library/Frameworks/Kernel.framework/Versions/A/Headers",
    "/Applications/Arduino.app/Contents/Java/libraries",
    "/Applications/Arduino.app/Contents/Java/hardware/tools/avr/avr/include",
    "/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/variants/standard"
],
"browse": {
    "limitSymbolsToIncludedHeaders": false,
    "path": [
        "/System/Library/Frameworks/Kernel.framework/Versions/A/Headers",
        "/Applications/Arduino.app/Contents/Java/"
    ]
},
"forcedInclude": [
    "/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Arduino.h"
],

Windows 10:

1. Установить WinAVR

2. Отредактируйте c_cpp_properties.json:

Пересмотреть includePath, чтобы он выглядел так:

"includePath": [
    "{$workspaceFolder}/libraries",
    "C:/Program Files (x86)/Arduino/hardware/tools/avr/lib/gcc/avr/5.4.0/include",
    "C:/Program Files (x86)/Arduino/hardware/arduino/avr/cores/arduino",
    "C:/Program Files (x86)/Arduino/hardware/arduino/avr/variants/standard",
    "C:/Program Files (x86)/Arduino",
],

Альтернативный метод (вероятно, плохая идея):

Если вы можете получить версию какой-либо отсутствующей библиотеки, вы, вероятно, можете поместить ее в папку libraries вашего проекта, если ваш includePath включает "${workspaceFolder}/libraries". Убедитесь, что пространство имен вашей библиотеки правильно, например, libraries/avr/pgmspace.h. Я не проверял этот метод.


Обновления:

  • Изменен из home.path для включения пути. Подробнее здесь: vscode-cpptools / FAQ
  • Инструменты, загруженные библиотеками vscode-arduino, не нужны в Windows 10.
  • Изменены пути конфигурации Windows для использования прямой косой черты вместо экранированной обратной косой черты.

Источник и дополнительные советы: Включение Arduino Intellisense с помощью кода Visual Studio

...