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 (достаточно старая версия, но обновляться не будет)

спасибо

★★★★

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

int8_t — это не AVR-тип, это тип из C99, не все редакторы их подсвечивают, да.

DuMOHsmol
()

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

ox55ff ★★★★★
()

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

anonymous
()

int8_t это из stdint.h и доступен на любой современной системе.

А у Qt creator надо правильно настроить пути к инклюдам.

KivApple ★★★★★
()
Ответ на: комментарий от 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)
Ответ на: комментарий от Ivan_qrt

спасибо, вот это по нашему! :о)

sunjob ★★★★
() автор топика
Ответ на: комментарий от I-Love-Microsoft

about Makefile

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

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

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

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

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

или вы о чем?

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

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

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

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

«Bare Metal» используешь?

п.с. да и поподробней совсем не помешает, раз уж «расширились» до «систем сборки» :о)

sunjob ★★★★
() автор топика
Ответ на: комментарий от 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 ★★
()
Ответ на: комментарий от kuzulis

да этого достаточно, спасибо

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