LINUX.ORG.RU

Arduino + clangd

 , ,


0

1

Добрый день, использую в качестве LSP-server clangd+eglot(emacs) , в качестве эксперимента скормил сгенеренный через Arduino.mk Makefile(затем создал с помощью bear compile_commands.json).

У меня вопрос к знатокам clang

  • Как вручную запустить clang(d) и скормить ему compile_commands.json
  • Arduino использует gcc а также задает много параметров для макросов через флаги при компиляции. Знаю что есть ветка с бэкендом под avr не берусь судить его работу. Вопрос, для синтаксического анализа нужен же только разбор кода, могу ли я дополнить каждую команду в compile_commands.json флаго -fsyntax-only и поможет ли это?
★★★★★

Последнее исправление: DR_SL (всего исправлений: 1)

А самой интересной команды в compile_commands.json и нет.


/home/user/source/arduino-1.8.8/hardware/tools/avr/bin/avr-g++ -x c++ -include Arduino.h -MMD -c -D__PROG_TYPES_COMPAT__ -mmcu=atmega32u4 -DF_CPU=1
6000000L -DARDUINO=188 -DARDUINO_ARCH_AVR -I/home/user/source/arduino-1.8.8/hardware/arduino/avr/cores/arduino -I/home/user/source/arduino-1.8.8/
hardware/arduino/avr/variants/yun    -Wall -ffunction-sections -fdata-sections -Os -DUSB_VID=0x2341 -DUSB_PID=0x8041 -DUSB_PRODUCT='"Arduino Yun"' -D
USB_MANUFACTURER='"Unknown"' -fpermissive -fno-exceptions -std=gnu++11 -fno-threadsafe-statics -flto -fno-devirtualize -fdiagnostics-color=always Bli
nk_0001.ino -o build-yun/Blink_0001.ino.o

с вот этим ручным включением заголовочного файла Arduino.h

DR_SL ★★★★★
() автор топика

чёто-то где-то краем уха слышал что у ардуины какой-то свой модифицированный препроцессор
Или это бред?

Bad_ptr ★★★★★
()
Последнее исправление: Bad_ptr (всего исправлений: 1)
Ответ на: комментарий от Bad_ptr

Там avr-gcc просто в файл включают начильно заголовок и прописывают кучу параметров для макросов типо

DUSB_VID=0x2341 -DUSB_PID=0x8041 -DUSB_PRODUCT='«Arduino Yun»

DR_SL ★★★★★
() автор топика

Я боюсь, что хер у тебя что получится с clang. Мимо llvm-committer. Напиши в ирку на всякий случай. И cfe-dev@

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от snizovtsev

Ну это какая-то надстройка(не понял что он использует когда не использует clang), тут все равно остается проблема что compile_comands сгенеренный bear и compiledb не является корректным так как в нем остутствует строка компиляции ino файла

DR_SL ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.