QT Creator как IDE для “C-Embedded-проектов”

QT Creator как IDE для «C-Embedded-проектов»

Хочу с вами поделиться еще одним удобным инструментом, помогающим в нашем любимом Embedded деле.
Этот инструмент — это IDE для Embedded-разработчика. В статье хочу затронуть лишь вторую сторону Эмбэдеда, программирование.
То есть, тут не будет ни слова о микросхемах и микроконтроллерах.
Так сложилось, что я по мере нужды занялся поиском, и нужно было найти графический, легкий, удобный, полнофункциональный IDE для Embedded и к тому же под Linux, а самое главное – бесплатный, или в идеале под GPL лицензией.
Альтернативы типа Eclipse и NetBeans меня не впечатлили, тяжелые и очень неудобные. Мега любимый SlickEdit (который я считаю просто самым лучшим IDE) стоит дорого, а его демо-версия попросту не способна слелать то что умеет полнофункциональная версия (я это проверял).
Был сделан поиск, и после выбора среди вариантов был найден ответ. Ответ был QTCreator. Разумеется что это не панацея, и кое чего он не может(или я не нашел как это сделать), но также может много, тоесть золотая середина.
В любом случае, думаю что если нужно удобно и быстро работать с кодом на языке C, то это можно сделать весьма комфортно используя IDE, выше озвученный QTCreator. Ну и также если у вас Java-проект, то QTCreator тоже справится, просто потому что он по синтаксису очень похож на C++, который поддерживается.

Qt Creator IDE



Дальше я буду описывать именно работу с ним из под Linux, но уверен все тоже самое вы можете сделать и мод Mac и под Windows.

Что такое Qt Creator?

Qt Creator is a cross-platform integrated development environment (IDE)
tailored to the needs of Qt developers. It provides:
C++ and JavaScript code editor
Integrated UI designer
Project and build management tools
gdb and CDB debuggers
Support for version control
Simulator for mobile UIs
Support for desktop and mobile targets
Qt Creator is available under GPL v3, LGPL v2 and a commercial license. Learn more about licenses here.

А также вам может пригодиться общее описание – Qt Creator Manual

Подготовка к установке:
Первое что нужно сделать, это скачать последнюю версию с сайта – official site: вот например для 64-bit под Linux – qt-creator-binary-for-linux-x11-64-bit. Или взять по ссылке Latest-version. Ну, а теперь, после того как скачали, устанавливайте.

Возможный вопрос:
Это же среда разработки для QT. Для чего это нужно?

Ответ:
А вот и нет, это распространенное и ложное мнение. Это мощный IDE, который если использовать, он также ускорит работу с вашим C, C++ или Java исходным кодом или проектом. Дело в том что в этом IDE используются современные технологии по анализу кода на лету (Low Level Virtual Machine “LLVM” & Clang), в процессе написания кода QtCreator анализирует ваш код, и если вы где-то ошиблись или в коде или по факту отсутствует хидер (*.h), происходит автоматическая подсветка, это уменьшает количество возможных ошибок и лишней траты времени. А так как это IDE то можно быстро браузить по исходным кодам, просто нажимая F2, на элементе структуры или переменной. Как вы понимаете исследование незнакомого кода при этом происходит гладко и быстро.

Приступаем к работе:
Теперь, когда вы QTCreator скачали и установили, запустите его и создайте – C project и сохраните этот проект (что бы создались проект-файлы), для примера, дадим имя “EProject”. После этого создадутся файлы проекта
EProject.config
EProject.creator
EProject.creator.user
EProject.files
EProject.geany
EProject.includes

Теперь возьмите мой скрипт:
он ниже. Если хотите, перепешите его как сами хотите, этот скрипт просканирует вашу директорию проекта и обновит файл EProject.files на предмет наличия файлов с расширениями *.c, *.h, *.cpp, *.java. Просто будут добавлены полные пути, и все. Это нужно для быстрой навигации про исходным кодам.

содержимое скрипта — qt_create_proj.sh

#!/bin/bash 
H=$HOME 
PROJ_PATH=`pwd $1` 
DIR_ARRAY=( \
 base/code \
 headers \
 hw \
)
CNT=${#DIR_ARRAY[*]}
do_exit()
 {
 TOTAL_FILES=`wc -l ${PROJ_PATH}/EProject.files`
 echo "Total files in project are: ${TOTAL_FILES}"
 exit 0;
 }
> $PROJ_PATH/EProject.files
for (( n=0; n< $CNT; n++ )); do CUR_PATH=${DIR_ARRAY[n]}; echo $CUR_PATH
 tree -fni --noreport $CUR_PATH | grep ".c" | while read l; do [ -f"$l" ] && echo $l; done >> $PROJ_PATH/EProject.files
 tree -fni --noreport $CUR_PATH | grep ".h" | while read l; do [ -f "$l" ] && echo $l; done >> $PROJ_PATH/EProject.files
 tree -fni --noreport $CUR_PATH | grep ".cpp" | while read l; do [ -f"$l" ] && echo $l; done >> $PROJ_PATH/EProject.files
 tree -fni --noreport $CUR_PATH | grep ".hpp" | while read l; do [ -f"$l" ] && echo $l; done >> $PROJ_PATH/EProject.files
 tree -fni --noreport $CUR_PATH | grep ".java" | while read l; do [ -f"$l" ] && echo $l; done >> $PROJ_PATH/EProject.files
done
do_exit


В этом скрипте указаны интересующие меня расширения *.c, *.h, *.cpp, *.java и если вам нужны еще какие-то расширения, просто по аналогии добавьте для нужного вас расширения строку.

Переменная DIR_ARRAY – Это массив директорий (относительно корня проекта) которые нужно добавить в проект.

Теперь можно запустить скрипт

В командной строке, перейдите в директорию прокта, и запустите скрипт:
$ ./qt_create_proj.sh .

тут “.” это текущая директория

После запуска скрипта, будет сгенерирован файл проекта EProject.files, в котором будут указаны все пути на все файлы расширения которых были указаны в скрипте.

Запускайте QTCreator, выбирайте ранее сохраненный проект, и начинайте работать с кодом.

QTCreator, при старте сам начнет индексацию файлов исходного кода в фоне на основании сгенерированного файла скриптом, и сделает индексацию очень быстро.

Очень надеюсь, что вам эта статья была полезна и пригодится на практике.
Спасибо за внимание и желаю удачи.

(С) Данная статья, это подредактированная для этого сайта, копия с моего сайта «МикроСхема» — uschema.com ( )
  • +2
  • 29 июля 2011, 20:01
  • uschema

Комментарии (32)

RSS свернуть / развернуть
notepad++ рулит)
+2
notepad++ рулит)
+1

uschema, используйте тег cut, ибо без него Ваш пост занимает очень много места на странице персональных блогов!
0
Спасибо, да точно, в спешке забыл про это.
0
безусловно notepad++ рулит )
однако он при этом остается просто редактор текста с подсветкой синтаксиса.
notepad++ это не IDE и только под виндовс :)
+1
по-моему больше всех интересует как связать среду(IDE) с железкой, чтобы было меньше телодвижений по прошивки и etc.
QtCreator анализирует ваш код, и если вы где-то ошиблись или в коде или по факту отсутствует хидер (*.h), происходит автоматическая подсветка
а это интересно, я что-то не работал с ide чтобы подсвечивала при написании то что находится в *.h
0
  • avatar
  • pkm
  • 29 июля 2011, 20:38
Eclipse подсвечивает, автодоплоняет, т.п.
0
Э? Вроде, это сейчас делают практически все приличные IDE.
0
да, многие IDE проявляют интеллект, но не все IDE легковесные и кросс-платформенные при этом :)
0
На данном этапе написании статьи с железкой оно интегрируется только на уровне как внешний редактор, может есть возможность по факту, но я ее не искал, не было необходимости.
Главное что оно умеет быстро перемещаться по коду из большого количества файлов по F2(goto-difinition) и другие комбинации.
0
для него можно писать плагины, и т.о. прикрутить что угодно…
для прошивки можно просто добавить кнопочку, которая будет запускать нужный скрипт
0
Ведь была у меня мысль использовать эту IDE, но с ходу не получилось.
Спасибо, очень пригодится.
0
IDE очень неплохая, в последних версиях здорово выросла. Но вот в контексте embedded-программирования… Хм)
0
Дело в том что в этом IDE используются современные технологии по анализу кода на лету (Low Level Virtual Machine “LLVM” & Clang), в процессе написания кода QtCreator анализирует ваш код

Интересно, только меня смущает эта фраза? Как бы, Clang — это компилятор языка C для LLVM, казалось бы, причём тут анализ кода на лету? Другой разговор, что Clang гораздо более многословен в процессе поиска ошибок и варнингов, чем тот же GCC. Тут, наверное, имелся в виду статический анализатор, который идёт в комплекте с Clang, но, вообще-то, есть и другие анализаторы кода, так что какой-то особой роли Clang тут тоже не видно…
0
Кажется понял, что именно меня вчера в ночи на сонную голову меня так смущало в этой фразе — слово «технологии» и LLVM и Clang в скобочках его как бы поясняющие. Clang — это никакая не современная технология, а самый обычный компилятор языка C/C++/ObjC. Низкоуровневую виртуальную машину технологией назвать можно, но она никаким образом к статическому анализу кода отношения не имеет, разве что к динамическому. К тому же, насколько мне известно, на AVR, например, LLVM пока ещё не портировали =).
0
Да, кстати, где автор взял информацию об использовании Clang в QTCreator? Заинтересовало, но нигде ничего об этом не смог найти, нашёл только, что саму QT и QTCreator сумели собрать Clang'ом.
0
Про Clang мне рассказал один старый знакомый, который уже долго с ней работает.
0
Спасибо, эта IDE хорошая весч.
0
Без поддержки внутрисхемной отладки это всего лишь замена NotePad++ т.е. не более чем в исходник позырить с удобством.
+1
Я бы так не сказал. Отладка конечно ценно, но для нее можно и в отдельный дебагер проект утащить (например, указать генерить DWARF2 COFF и затем открывать его в аврстудио). А вот писать в чем-то вроде 4-й студии — это пипец.
Кстати, оно же вроде поддерживает GDB. Неужели нельзя привязать другой GDB с сервером для AVR-JTAG? А для ARM-none-eabi вроде уже в комплекте дебаггер идет.
0
Хм у меня в отладчике проходит до 80% времени. Так что туда сюда переключатся не вариант ваще.

ICE 2 вроде бы это поддерживает, насчет первого хз.
0
Ололо. Не, я в отладчике по столько не сижу. К тому же сижу достаточно длинными сессиями.
Каждому свое, впрочем. С отладкой выбора в общем-то и нет, насколько я знаю — студия и может быть иар. Но уж больно неудобно в них писать.
0
А в чем неудобство то? Я одно время сидел на CoIDE под армы, на базе эклипса. Не сказал бы что принципиально среда лучше. Ну сворачивать функции можно и находить файлы подключаемые, но так и проекты для авр обычно небольшие, не содержащие 100500 файлов.
0
Мне неуютно в средах, которые в плане редактора кода недалеко ушли от блокнота. Хотя проекты на МК и попроще тех, с которыми я обычно работаю на ПК, да. Правда, найти тело какой-нить функции того же вайринга без нормального навигатора не так быстро. Опять же, я никогда не помню аргументы функций, даже тех, что сам написал — в нормальных IDE это просто не нужно. Ну и сам редактор во всяких авр студио тоже неудобный, в этом плане им и до Notepad++ далеко.
0
Конечно, это не отладчик. Это просто удобный IDE. Я не знаю конечно, наверно это дело привычки, но я обычно обхожусь на своем софте для МК бибо вообще без дебагера, либо же достаточно printf или светодиоды :) Если нужно дебажить большую часть времени то конечно это IDE не вариант. Однако там можно прицепить внешний дебагер, возможно это вариант в мнимом будущем :)
0
Думаю не много документации на русском о Qt и Qt Creator не помешает.
А также Russian Qt Forum.

На а насчет встраиваемых решений, думаю можно посмотреть на Qt Extended или Qt Embedded, хотя уверен что речь шла не об этом :)
0
Перенес в Софт.
0
Уточнение, для версии под линукс желательно, чтобы переменная окружения LANG была en_US, у меня с ru_RU.utf8 автодополнение отказывалось работать, а с LANG=«en_US.utf8» все было отлично
0
Выглядит очень даже симпатично. И чего бы эклипсу не делать такой-же интерфейс… :-(
Автор, скажи. У него как насчёт рефакторинга. Ну типа чтобы локальную переменную переименовать из x в longitude и при этом не затронуть x других функций. Что-то гугл не внёс ясности. А в эклипсе уже так привык, что не проживу без такого.
0
правой кнопкой клик на переменную и в контекстном меню выбери rename
0
С рефакторингом у него замечательно, я пользовался несколько раз. Но не так умно как например в SlickEdit`е. :)
0
QT это QuickTime.
QT!=Qt
0
  • avatar
  • a1ien
  • 04 августа 2011, 13:49
Кстати говоря, на днях вышла версия 2.3.0 :)
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.