вторник, 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. Я отпишусь, как решить эту проблему.

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

  1. Спасибо за блог. Надеюсь вы продолжите писать.
    Искал про Плагины к креатору а тут вы.
    Хоть и общая информация, но всё-равно хорошо что есть.

    ОтветитьУдалить
  2. Да не говорите, информация общая- дальше некуда. Самому стыдно. Надеюсь, что будет больше вглубь, чем вширь, вот только программить эти плагины надо начать...

    ОтветитьУдалить