Qt Creator 2.7: QBS менеджер проектов под капотом

от автора

Приветствую, друзья! В начале февраля была анонсирована IDE Qt Creator 2.7 beta, и вот 21 марта был представлен релиз 2.7.0.
Итак, из заметных изменений в новом релизе были:

  • Улучшенная поддержка интрументариев (Kits);
  • Дальнейшая поддержка С++11;
  • Изменения в QML и Qt Quick2.

Множество мелких изменений таких как поддержка слияния для git плагина, улучшения в отладчике, но в целом релиз не революционный, а эволюционный.
Знаете, я не буду подробно расписывать все изменения, их можно прочитать в пресс-релизе.
Есть одно для меня заметное новшество — появление в master ветке поддержки QBS плагина. О системе qbs я писал ранее на хабре, но некоторые читатели могли подумать что разработка зависла, или нет значительных результатов — постараюсь в данной статье немного развеять туман.

1. Поддержка qbs проектов (плагин QbsProjectManager)

(примечание: пока не было релиза, бывают проблемы со сборокой, и со стабильностью под Windows).
Как собрать? Я просто сокращу время вашего чтения, не буду писать команды для git.

  • делаем checkout или просто сохраняем архив репозитория QBS
    «qt.gitorious.org/qt-labs/qbs/trees/master» или «git://gitorious.org/qt-labs/qbs.git»
  • аналогичные операции с деревом исходников Qt Creator
    «qt.gitorious.org/qt-creator/qt-creator/trees/master/» или «git://gitorious.org/qt-creator/qt-creator.git»
  • собираем qbs из директории с исходниками
    qmake -r qbs.pro && make

  • открываем проект «qtcreator.pro», добавляем переменные окружения
    QBS_BUILD_DIR=путь/к/папке/qbs
    QBS_SOURCE_DIR=путь/к/папке/qbs
    Если вы настраивали теневую сборку, то необходимо поправить эти пути.
  • запускаем сборку Qt Creator, и если все пройдет нормально, то вы получите бинарники IDE и плагина с поддержкой QBS.

Если все нормально не прошло, ошибки компиляции (бывает!), то два пути:

  • попробовать более старую версию qbs (откатиться на недели две назад)
  • попробовать исправить самостоятельно.

Кроме того, самый быстрый путь, это просто скачать бинарную сборку и включить плагин QBS Project Manager в настройках.

2. Текущие возможности плагина

Они более чем скромны. Можно собрать проект. А можно и не собирать!

А еще можно пересканировать qbs файл (например, были добавлены файлы, а список файлов задан маской) для перестроения дерева. Естественно, остаётся возможность запустить под отладчиком, как и qmake проект.
Как проходит сама сборка: как и с qmake, в Выводе сборки (Compile Output ) мы видим вывод qbs. В большинстве своем он весьма лаконичен, пока не возникают ошибки или предупреждения. Сборку можно прервать. И слава Богу что такая возможность уже есть)

Вывод сборки

 15:32:58: Running steps for project qtcreator... compiling tcpportsgatherer.cpp compiling textfileformat.cpp compiling treewidgetcolumnstretcher.cpp compiling uncommentselection.cpp compiling unixutils.cpp moc wizard.cpp moc wizard.h compiling faketooltip.cpp moc faketooltip.h moc tips.h compiling tipcontents.cpp moc tooltip.h compiling tooltip.cpp The following products could not be built: QmlJSEditor, GLSLEditor, Git, CodePaster, Perforce, ClearCase, Android, Welcome, Core, Aggregation, Find, Debugger, RemoteLinux, styleplugin, QtcSsh, AutotoolsProjectManager, FakeVim, CMakeProjectManager, ImageViewer, QmlJSTools, Qnx, Mercurial, CppTools, GenericProjectManager, PythonEditor, QmlProjectManager, zeroconf, UpdateInfo, Bookmarks, LanguageUtils, BinEditor, Subversion, QtSupport, Designer, ExtensionSystem, Utils, cpaster, qtcreator_process_stub, TaskList, Macros, GLSL, QmlDebug, ProjectExplorer, ptracepreload, app_version_header, DiffEditor, Help, qtcreator, Todo, Bazaar, TextEditor, ClassView, CPlusPlus, CVS, Qt4ProjectManager, ResourceEditor, translations, QmlJS, VcsBase, Madde, qtpromaker, CppEditor, QmlEditorWidgets, QmlProfiler, HelloWorld, Valgrind, AnalyzerBase, sdktool, Locator. Build was canceled due to user request. 15:33:05: Canceled build/deployment. 15:33:05: Elapsed time: 00:05. 

Естественно, если находятся ошибки, то можно их увидеть в виджете ошибок сборки. Есть огрехи с разбором (ошибки выводятся дважды фактически), и с иконкой предупреждений (выводятся как ошибки). Надеюсь, это поправят.
Кроме того, есть возможность из контекстного меню пересобрать один конкретный файл. По моему ощущению, эта возможность пока как-то нестабильно себя ведет (закономерностей в ее поведении не заметил, но иногда она даже работает).
Загрузив qbs проект для QtCreator, мне удалось собрать его за 13 минут (что раза в два — примерно- быстрее чем qmake+make).
В закладке Запуск (Run) есть базовая настройка этапов для сборки под qbs. При попытке добавить свой вариант, QtC вылетел. Печально.

3. Самое вкусное. Что же было добавлено за год?

  • Улучшена поддержка команды «clean». Раньше она просто удаляла директорию сборки, теперь появились различные опции;
  • Добавлена возможность указывать список файлов с помощью масок (и исключений). Вот пример из тестов:
    patterns.qbs

    import qbs.base 1.0 Application {     type: 'application'     name: 'HelloWorld'      Depends { name: 'cpp' }      cpp.defines: ['SOMETHING']      //files: '../patternfiles/././.*\\..\\patternfiles/*s*r*c*\\foo.*'      Group {         files: 'src/foo.*'         excludeFiles: 'src/foo.2.cpp'         recursive: true     }      Group {         cpp.defines: outer.concat(['HAVE_MAIN_CPP', cpp.debugInformation ? '_DEBUG' : '_RELEASE'])         prefix: "src/"         files: 'main.*'     } } 

  • Добавлена поддержка команды deploy;
  • Переработана система настроек и профилей, на мой взгляд стала более понятной — убраны «платформы» как концепт, перешедший из QtC;
  • Улучшены команды run и install;
  • Переработана и значительно улучшена поддержка MSVC — .PCH, .rc, .manifest файлы.
  • Появилась возможность конфигурировать сборку, при помощи Configure Probes. Как их применять — можно посмотреть в папке tests.
  • Расширена поддержка MacOS и Objective-C.

Что могу еще добавить? Мне не удалось протестировать даже и половины возможностей QBS, но могу сказать что организация кросс-платформенных сборок (под arm тулчейн) оказалась весьма удобной и приятной.
В заключении остается лишь отметить, что не смотря на бурное и взрывное развитие, QBS все еще находится в стадии активной разработки, и все еще может ломаться совместимость (до 1.0 релиза, который хорошо если в этом году появится).
Так же можно ознакомиться с мой прошлой статьей о QBS.

ссылка на оригинал статьи http://habrahabr.ru/post/171405/


Комментарии

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *