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

в 7:09, , рубрики: qbs, qt, qt creator, Qt Software, qt5, Программирование, метки: , , ,

Приветствую, друзья! В начале февраля была анонсирована 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. Текущие возможности плагина

Они более чем скромны. Можно собрать проект. А можно и не собирать!
Qt Creator 2.7: QBS менеджер проектов под капотом
А еще можно пересканировать 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 вылетел. Печально.
Qt Creator 2.7: QBS менеджер проектов под капотом

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.

Автор: mapron

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js