Jan. 11th, 2017

Makefile

Jan. 11th, 2017 11:08 am
В мелких проектах совершенно не хочется мучиться с cmake, но и Makefile в том виде, что у меня был, далек от совершенства. Полтора часа убил, чтобы автоматом генерировать зависимости. До этого у меня было правило, делающее @touch сишному файлу, если изменился соответствующий заголовочный файл, и это вызывало проблемы с другими сишными файлами, включающими этот же заголовок. Другой проблемой было постоянное напоминание geany, что файл был обновлен извне (то, что содержимое после touch не изменилось, его не волнует).
Множество решений с SO выдавало всякие разные проблемы. Основной было то, что как только я изменю какой-нибудь файл (.h или .c — в разных вариантах по-разному), как make переставал удовлетворяться предыдущей сборкой после обновления и постоянно пересобирал совершенно все!
Вот это решение вроде как спасает ситуацию.
Makefile )
(оно, правда, тоже пересобирает все подряд, но уже не постоянно, а лишь несколько последующих запусков).
Geany вполне способен работать с автодополнением — нужно лишь сгенерировать для него файлы с тегами. Его формат не совсем совместим с ctags, но здесь доступно описывается, что geany -g генерирует файлы с тегами, которые затем можно вставить в проект. Можно добавить в Makefile правило для автоматической перезаписи этого файла.

Таким образом, для библиотечных файлов той же opencm3 можно сгенерировать теги и автодополнение будет работать. Отсюда можно скачать уже сгенерированные теги для некоторых библиотек.

Вот так генерируется файл для libopencm3 под F0:
CFLAGS="-DSTM32F0 -DSTM32F042x6 -I/usr/local/arm-none-eabi/include" geany -g opencm3f0.c.tags /usr/local/arm-none-eabi/include/libopencm3/stm32/*.h /usr/local/arm-none-eabi/include/libopencm3/stm32/f0/* /usr/local/arm-none-eabi/include/libopencm3/cm3/*.h  /usr/local/arm-none-eabi/include/libopencmsis/core_cm3.h /usr/local/arm-none-eabi/include/libopencmsis/stm32/f0/irqhandlers.h /usr/local/arm-none-eabi/include/libopencm3/stm32/common/*.h 2>/dev/null


Жаль только, что при щелчке с ctrl по функциям/переменным файл с их определением не открывается. В перечнях плагинов я такой вещи не встречал. Будем ждать реализации...

July 2017

S M T W T F S
      1
23 4 5 6 78
9 101112 131415
16171819 202122
23242526272829
3031     

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 25th, 2017 04:46 am
Powered by Dreamwidth Studios