вторник, 30 июня 2009 г.

Сборка плагинов

Одна из самых интересных и полезных вещей в Qt Creator- это возможность его расширения с помощью плагинов. Тролли пока не дают никакой документации, как их писать, или что там за API, зато примеров хватает. Найти примеры можно в исходниках Qt Creator. Я распаковал все исходники прямо в директорию SDK (у меня- Qt/2009.03/), поэтому исходники оказались в Qt/2009.03/qt-creator-1.2.0-src/, хотя наверняка разницы нет, куда распаковывать. Все пути ниже даны относительно директории исходного кода.

Для начала, соберем и установим плагин HelloWorld (src/plugins/helloworld/), в API будем копаться позже.

Открываем проект helloworld.pro, собираем, и... видим, что не линкуется. Не хватает библиотек Aggregation, ExtensionSystem и Utils. Эти библиотеки находятся в src/libs/ в директориях aggregation/, extensionsystem/ и utils/ соответственно, их проекты надо открыть и собрать. Также, для сборки нашего плагина нужна библиотека libCored, поэтому придется собрать и coreplugin (src/plugins/coreplugin/). Можно, конечно, собирать каждый проект по отдельности, но есть путь и проще- и открыть их все, а на экране Projects установить зависимости. Так, HelloWorld зависит от CorePlugin, а CorePlugin- от библиотек Aggregation, ExtensionSystem и Utils.



Затем говорим- Build->Build Project helloworld, он теперь должен слинковаться. Все новые библиотеки должны появиться в lib/qtcreator/, а плагины- в lib/qtcreator/plugins/Nokia.

Осталось только перенести наш плагин в QtCreator и запустить. Плагины лежат в директории Qt/2009.03/lib/qtcreator/plugins/Nokia, сюда надо скопировать только файлы HelloWorld- HelloWorld.pluginspec и libHelloWorld.so (.dll для виндовс). Перегружаем Qt Creator и видим новую кнопку Hello Wolrd! на тулбаре слева:



Если нажать на нее, все рабочее пространство будет занято кнопкой Hello World Push Button.

Но, в виндовс новый плагин не распознается. Такое впечатление, что Qt Creator для виндовс был собран MSVC, и методы из моего плагина просто не видны, потому что он слинкован в MinGW. Я отпишусь, как решить эту проблему.

воскресенье, 28 июня 2009 г.

Зависимости в примерах 1.2.0

Версия 1.2.0 поставляется с большим количеством примеров, я их решил посмотреть. Начал с System Tray Example (под линуксом). Сразу, конечно, не собралось, потому что не нашлись библиотеки:
  • freetype (FreeType 2)
  • gobject-2.0 (GLib 2.0)
  • SM
  • Xrender
  • fontconfig
  • Xext

FreeType нашелся здесь: /qtsdk-2009.03/qt/src/3rdparty/freetype
Собираем стандартно:

./configure
make
sudo make install


Gobject, SM, XRender, FontConfig, Xext надо уставновить:
sudo apt-get install libglib2.0-dev libsm-dev libxrender-dev libfontconfig1-dev libxext-dev


Все собралось, приложение сворачивается в трей вместо закрытия.

P.S. Под виндовс все собирается за шесть секунд. Никаких проблем с библиотеками.

Qt Creator 1.2.0

QtCreator проапгрейдился до версии 1.2.0. Из наиболее заметного- переделанный экран Welcome, сортировка методов класса в списке сверху по алфавиту и выделение блоков в редакторе. Из менее заметного- поправлен фолдинг, добавлен отладчик CDB, доработан интерфейс дебагера- теперь можно брейкпоинты отключать и к процессу подключаться по его id. Также дописали кое-что в доках. Полный список исправлений- на оффсайте.

вторник, 23 июня 2009 г.

Первый пост

Наконец-то я сподобился и блог завести. Буду сюда вот записывать все свои впечатления от Qt Creator. Не графоманства ради, а чтобы не потерялись.

Начнем с общего, пожалуй.

Сейчас гоняю версию 1.1.0 на убунте и винде. Прогресс по сравнению с 1.0.0 налицо- мне, ламеру, уже можно работать.
Серьезно и глубоко пока, правда, не копал. Под обоими осями проект компиляется, собирается и запускается. Нареканий нет, не то что раньше. Про бету, или того хуже, technology preview, вспоминать не хочу вообще, настолько там все было грустно.

Порадовало, что все сделано на плагинах. Их, конечно, пока не много, да и SDK для них нет, но народ в правильном направлении движется. Тролли с дизайном не подкачали, а доки обещают написать, они у них всегда удавались. Еще порадовал UI. Т.е. на моем стареньком ноуте вполне можно формочки ваять или текст набирать с открытым хелпом. С прочими прогами это далеко не всегда удавалось.

Как выбирал. Хотелось мне легкую и быструю среду под С++, и лучше с интеграцией Qt Designer и Assistant. И чтобы работала на старом ноуте под убунтой. Перечислю, что я перепробовал для C++, и постараюсь вспомнить что в них понравилось или нет.

Начну с VC++ 2005, который я еще на старой работе под виндой пользовал. Интеграция с Qt- раз. Все фишки, которые не замечаешь, пока без них не останешься, как code completion,- два. Но- платное и прожорливое.
И опять же, под линукс никаких VC нет. Так что искал я, получается, бесплатную замену VC под линукс, когда Qt Creator еще не было и в помине.

Зато был Eclipse, еще одно неуклюжее творение ИБМа. Ну, это чудовище до релиза Европы торомозило так, что я его как только поставил, так и снес. Его, вроде, Ганимед звали. Европа была побыстрее, но все равно не летала. Qt c ней интегрировалась не слишком стабильно, вечно что-то отваливалось- то хелп не запускался, то проект не собирался. На старом ноуте не прижилось, ну и ладно.

Потом был NetBeans. Вот им я был волне доволен. Конечно, поддержка code completion для C++ там никакая, да и с Qt интеграции нет, но он зато быстро и стабильно работал, хоть и на джаве написан.

Пробовал я еще KDevelop, Geany, MonkeyStudio и MonoDevelop и т.п. KDevelop как-то сразу не пошел. Geany... В общем, подход нравится, но не серьезно пока. MonoDevelop производит добротное впечатление, но заточен под .NET, C# и GNOME, c C++ там все запущено.

Остановился бы я, наверное, на MonkeyStudio, если б не Qt Creator. И дело не в том, что MonkeyStudio сыроват, просто Qt Creator его уже заткнул за пояс и вполне может конкурировать с VC++, по крайней мере, по тому, что мне нужно.

Все основное, что есть в VC++, есть и в Qt Creator. Visual Assist, конечно, был вне конкуренции, да и парочка других- тоже платных- плагинов здорово время берегла, но, как говорится, дареному коню...

Так что, блог будет не о MonkeyStudio, или, не дай бог, Eclipse, а о Qt Creator.