LINUX.ORG.RU

QTCreator & AVR, подсветка «нестандартных/AVR типов»

 , , , ,


0

2

добрый день

qtcreator - не подсвечивает и автокомплит не видит AVR-типы, т.к. int8_t etc...

(собственно, «а чего мы ожидали?», но все таки необходимая вешь при написании под AVR или какие еще "нестандартные задачи")

проект, при этом, собирается без проблем (no-qt with makefile)

копирование «из kate» и др., из инета, а так-же прочие «иные манипуляции» (включение, отключение, подмена) - не помогло:

~/config/qtcreator/generic-highlighter
/usr/share/apps/katepart/syntax

тему немного проработал, решения не нашел

в инете пишут что у креатора с этим «не совсем хорошо» (подсветка, правильное понимание типов, «встроенное» или «а-ля КАТЕ»-привязка ...)

высказываемся, философствуем ... :о)

в данной задаче меняться не будут (aka const) - qtcreator-3.1.2 (достаточно старая версия, но обновляться не будет)

спасибо


Проверь, чтобы были правильно прописаны пути до заголовков. У тебя qtcreator может хватать заголовки от системного компилятора. Наверное нужно натравить на тулчейн кросскомпилятора. Какая там у тебя система сборки cmake, qmake, bash-portjanka?

ox55ff ★★ ()

Переползай с этого говна мамонта на STM32! Мало того, что дешевле, так еще и 32 бита, АРМ + уйма периферии! И толщина RM всего лишь чуть больше тысячи страниц!11

anonymous ()
Ответ на: комментарий от ox55ff

Нет, так работать не будет.

ишо как будет

Все фичи заработают когда создашь проект

я не говорил, что «не использую проект»

когда создашь проект: qmake, cmake или qbs

есть еще проект «без ничего» (импорт существующего проекта)

С ПРОБЛЕМОЙ РАЗОБРАЛСЯ, надо добавить в файл проекта *.includes необходимые пути (автодополнение и подсветка заработали, «буду протестировать» в процессе работы)

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

УМ более менее ВР. Включил clang плагин, добавил несколько дефайнов под плату в настройках проекта. Пока единственное, что не победил - при разборе заголовков ругается на undefined __null. Решается переводом кодовой модели для заголовка в C, а не стандартный C++. В остальном всё ок, вроде.

Сборка через cmake, все нужные инклюды прописаны. Ну и в qtcreator'е в toolchain добавлен avr-gcc.

Ivan_qrt ★★★★★ ()
Ответ на: комментарий от Ivan_qrt

Включил clang плагин

нет такого плагина (мои - qtcreator-3.1.2/qt4, последняя версия, кот. собирается с qt4)

добавил несколько дефайнов под плату в настройках проекта

ни чего не «накручивал» в настройках проекта, используется проект «без системы сборки», точнее все настройки сборки в makefile

ругается на undefined __null

у меня все нормально, ни на что не ругается :o)

перевод кодовой модели для заголовка в С++ -> C

имеется в виду? (или что? подробнее можно?)

extern "C" {
...
}

Сборка через cmake

уже писал, у меня «без системы сборки», с помощью makefile

все нужные инклюды прописаны

надо подробнее обьяснять, что имеется под «все прописаны» у меня проект собирается «по умолчанию сразу», без проблем, без qtcreator, еще до «импорта в qtcreator-проект», и по поводу своего проекта, видимо, надо уточнить:

1. проект создается помошником «экспорт из существующего»

2. создается «минимальный проект» без «системы сборки» (в нашем случае используется makefile)

make all
make clean
make flash/upload

3. проект собирается сразу без ошибок (понятное дело, т.к. до этого он уже собирался без проблем :о)

4. проблемы проявлялись только в «сабдже», решается настройкой/добавлением каталогов в файл проекта *.includes

настройка этого файла на сборку не влияет, только на «решение сабджевой проблемы» (подсветка и автодополнение)

5. qtcreator-3.1.2/qt4 - не имеет библиотек (*), предполагаю, что они «просто так» не собираются в qt4-версии, хотя видел «блоб бинарник» для убунты, на qt-офсайте, вместе со всеми исходниками/пакетами - в нем присутствуют эти либы, подтасовка не дала результата

(*) - отсутствующие библиотеки/плагины:

- libclang.so
- libClangCodeModel.so
- ClangCodeModel.pluginspec

изначально qtcreator - был собранным/бинарником с офсайта, пробовал собрать самостоятельно, в результате - комплект тот-же, содержимое пакетов, размеры - совпадают с точностью до байта :o), кроме «своих доп. плюшек (документы, расшаренный каталог со своими „подсветками“ итд...)

как итог:

- проект минимальный (импорт существующего)

- сборка makefile (без qmake, cmake, qbs)

- собирается по умолчанию СРАЗУ и БЕЗ ПРОБЛЕМ

- подсветка решается методом - *.includes (файл проекта)

- qtcreator-3.1.2 (бинарник с офсайта + самосборка)

- qt-4.8.7

- avr-toolchins (avr-gcc-4.9.2, toolchains 3.4.2, 3.5.4, 3.6.1)

- пока „все, что ожидалось“ от qtcreator-a - на месте, работает, пыхтит, дымит и пашет :о)

надо будет дотошно присмотреться к сборке из исходников на предмет отсутствующих библиотек, м.б. не хватает к.л. зависимостей ... какие будут мнения на этот счет?

ВСЕМ СПАСИБО

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

p.s.

#
# cat *.includes
#

#
# avr-gcc-4.9.2-i486-sl12.2
#
/usr/lib/gcc/avr/4.9.2/plugin/include/
/usr/lib/gcc/avr/4.9.2/plugin/include/c-family
/usr/lib/gcc/avr/4.9.2/plugin/include/config
/usr/lib/gcc/avr/4.9.2/plugin/include/config/avr
/usr/lib/gcc/avr/4.9.2/plugin/include/cp

#
# avr-libc-1.8.1-i486-sl12.2
#
/usr/avr/include
/usr/avr/include/avr
/usr/avr/include/compat
/usr/avr/include/sys
/usr/avr/include/util
/usr/i486-slackware-linux/avr/include

# etc blah-blah-blah ...
sunjob ()
Последнее исправление: sunjob (всего исправлений: 1)
Ответ на: комментарий от sunjob

имеется в виду? (или что? подробнее можно?)

Я так понимаю, что это специфичные для clang code model плюшки. Для заголовочных файлов можно выбрать вариант разбора как С или как С++. Менюшка над окном редактирования, справа от списка файлов. Весьма вероятно, что у тебя такой нет, ибо некрофильствуешь.

надо подробнее обьяснять, что имеется под «все прописаны» у меня проект собирается «по умолчанию сразу», без проблем, без qtcreator, еще до «импорта в qtcreator-проект»

Собственно вся проблема с автокомплитом/подсветкой в том, что qtcreator не умеет разбирать make-файлы. Cmake умеет, просто make - нет. Из cmake'а он подтянул необходимые пути, флаги и дефайны. А из Makefile'а он их подтянуть не может, поэтому тебе придётся всё нужное прописать самостоятельно. Я так понимаю, это и решило проблему.

Ну и по поводу clang'а. У меня родная кодовая модель qtcreator'а не могла продраться сквозь дебри дефайнов в ASF и т.п. Автокомплит, вроде как, был нормальный, а вот с переходами к определениям были проблемы. Со шлангом пока проблем не замечено, всё разбирает, выдаёт много предупреждений по делу. Только вот с заголовками косяк, но решаемый. Но для него нужен свежий qtcreator.

Ivan_qrt ★★★★★ ()
Ответ на: комментарий от Ivan_qrt

Менюшка над окном редактирования, справа от списка файлов.

сделай скриншот, пожалуйста, где-то уже на что-то подобное натыкался, когда разбирался с «тестовыми проектами»...

sunjob ()
Ответ на: комментарий от Ivan_qrt

можно выбрать вариант разбора как С или C++
Менюшка над окном редактирования ...

и... а где там? э... :о) Ни-чего не понимаю! / братья пилоты

когда разбирался с креатором, видел где-то «чек-бокс» C/C++ в настройках проекта

sunjob ()
Ответ на: комментарий от Ivan_qrt

а что за плюшки то? хоть бы выделил контуром/цветом/карандашем?!

с виду обычный скрин, я такой же могу сделать :о)

не понятно, на что обратить внимание?!

где «эта самая переключалка» С/С++? (о которой идет речь)

sunjob ()
Последнее исправление: sunjob (всего исправлений: 1)
Ответ на: комментарий от I-Love-Microsoft

about Makefile

в топике столько раз об этом упоминалось

проект, при этом, собирается без проблем (no-qt with makefile)

уже писал, у меня «без системы сборки», с помощью makefile

«минимальный проект» без «системы сборки» (в нашем случае используется makefile)

сборка makefile (без qmake, cmake, qbs)

или вы о чем?

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

Я всегда использую QBS проекты, оно нормально работает и все подсвечивает. В том числе и с АВР. Нужно только тулчейн добавить. Работает как кросс компиляция как из линуха так и с винды.

И даже можно думаю и отладчик подцепить. Руки не дошли

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

Да, bare metal

Ну а что подробнее? Добавляешь компилятор АВР ГЦЦ, создаешь свой тип bare metal устройства, создаешь комплект. Все.

Потом переводишь свой проект на qbs.

Только QtCreator нужен последний, как минимум 4.7.0.

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

Добавляешь компилятор АВР ГЦЦ, создаешь свой тип bare metal устройства, создаешь комплект.

это понятно (стандартные шаги)

Потом переводишь свой проект на qbs.

подробнее, если не сложно (2-3 слова, под рукой пока ни чего...)

Только QtCreator нужен последний, как минимум 4.7.0

ну эт ясно понятно

sunjob ()
Ответ на: комментарий от sunjob

подробнее, если не сложно (2-3 слова, под рукой пока ни чего...)

Создаем файл mycoolproject.qbs. Открываем текстовый редактор, и добавляем в файл хидеры и сорцы проекта, нужные флаги компилятора, линкера, ассемблерные стартап файлы (если есть), файлы конфигурации линковщика *.ld (если есть), дефайны и т.п. Смотри примеры что с QBS идут или доку на QBS что там и как.

kuzulis ()