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

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

Так сложилось, что я по мере нужды занялся поиском, и нужно было найти графический, легкий, удобный, полнофункциональный IDE для Embedded и к тому же под Linux, а самое главное — бесплатный, или в идеале под GPL лицензией.

Альтернативы типа Eclipse и NetBeans меня не впечатлили, тяжелые и очень неудобные. Мега любимый SlickEdit (который я считаю просто самым лучшим IDE) стоит дорого, а его демо-версия попросту не способна слелать то что умеет полнофункциональная версия (я это проверял).

Был сделан поиск, и после выбора среди вариантов был найден ответ. Ответ был QTCreator. Разумеется что это не панацея, и кое чего он не может(или я не нашел как это сделать), но также может много, тоесть золотая середина.

В любом случае, думаю что если нужно удобно и быстро работать с кодом на языке C, то это можно сделать весьма комфортно используя IDE, выше озвученный QTCreator. Ну и также если у вас Java-проект, то QTCreator тоже справится, просто потому что он по синтаксису очень похож на C++, который поддерживается.

Qt Creator IDE

http://qt.nokia.com/images/products/qtcreatorbreakdown.png

Дальше я буду описывать именно работу с ним из под 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 ".h" | while read l; do [ -f "$l" ] && echo $l; done >> $PROJ_PATH/EProject.files
 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 ".cpp" | 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, при старте сам начнет индексацию файлов исходного кода в фоне на основании сгенерированного файла скриптом, и сделает индексацию очень быстро.

 

PS: Если у вас есть вопросы, задавайте их тут или на форуме.

2 комментария

  1. Если Вы захотите что бы использовалась подсветка в файлах не стандартных типов (например *.mk ), нужно сделать небольшой флирт ушами.
    Как написано в настройках — «Определения подсветки предостовляются текстовым редактором Kate». А именно, в директории /usr/share/kde4/apps/katepart/syntax найти подходящий тип файла — makefile.xml и в нем в нем найти поле с перечнем поддерживающих файлов.расширений:
    ... extensions="GNUmakefile;Makefile;makefile;GNUmakefile.*;Makefile.*;makefile.*" ...

    и тут нужно дописать расширение *.mk, должно получиться следующее:
    ... extensions="GNUmakefile;Makefile;makefile;GNUmakefile.*;Makefile.*;makefile.*;*.mk" ...

    и перезагрузить QTCreator.

  2. Строки:
    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 «.c» | 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 «.java» | while read l; do [ -f»$l» ] && echo $l; done >> $PROJ_PATH/EProject.files

    Можно заменить одной:
    find /path_to_src/ -type f -regex ‘.*\.\(c\|cpp\|h\|java\)’ > $PROJ_PATH/EProject.files

Добавить комментарий