LINUX.ORG.RU

Qt переходит с qmake на CMake

 , , ,


4

4

Сегодня в официальной рассылке Ларс Кнолл (Lars Knoll) подтвердил давно ходящие слухи об отказе от qmake в пользу CMake начиная с Qt 6.

Данное решение было результатом многочисленных дискуссий по поводу будущего системы сборки Qt. Команда признаёт, что эволюция qmake зашла в тупик и замена его было лишь вопросом времени. В июле Тьяго Мацейра (Thiago Macieira) перечислил требования к будущей системе сборки, из потенциальных кандидатов, удовлетворяющих им, в итоге остались Qbs и CMake.

Qbs разрабатывался внутри The Qt Company как альтернативная система сборки общего назначения, призванная избавиться от болячек qmake и предложить разработчикам декларативный язык описания проекта на основе QML. К сожалению, проект так и не получил достаточного развития и в последнее время поддерживался усилиями буквально одного человека. Для того чтобы Qbs конкурировал на рынке необходимо было бы приложить усилия, несоизмеримые с текущими возможностями и бизнес-целями компании. Таким образом, единственной областью применимой для Qbs мог бы стать перевод на неё самой Qt. Но даже это оказалось трудновыполнимой задачей из-за циклических зависимостей между Qt и Qbs, что прямо противоречило одному из основных требований.

И Qbs, и CMake показали хорошие результаты в ходе эксперимента по сборке Qt, но разработчики отмечают насколько далеко они сумели продвинуться именно с CMake за короткий промежуток времени.

Среди прочих достоинств CMake упоминаются широкое расспространение в экосистеме C++, в частности KDE, хорошая поддержка в популярных IDE и пакетных менеджерах (VCPkg, Conan и прочие), а также большая база пользователей.

Модули CMake уже официально входят в состав Qt 5 и планировались поддерживаться и далее наряду с qmake. Добавление третей системы сборки стало бы слишком тяжёлой задачей, поэтому отказ от Qbs был во многом предопределён.

Компания уверена в своём выборе CMake для Qt 6. Результаты уже сейчас можно опробовать в проекте qtbase, переключившись на ветку wip/cmake. Желающие принять участие в портировании остальных модулей приглашаются к сотрудничеству.

В дополнение, в официальном блоге Qt сегодня также заявили про прекращение разработки Qbs: http://blog.qt.io/blog/2018/10/29/deprecation-of-qbs.

>>> Подробности

★★★★★

Проверено: jollheef ()

Ответ на: комментарий от EXL

В различных IDE от JetBrains используется нечто похожее.

Я у себя так и сделал. KDevelop, Clion - так (с оговорками - они вспомогательные проектные файлы делают с информацией для себя, собственно - то, что я подумываю реализовать). MS VС, CodeBlocks - нет, но у них свой проектный файл, через который можно добавлять всё, что нужно в отображение.

h4tr3d ★★★★★ ()
Последнее исправление: h4tr3d (всего исправлений: 1)
Ответ на: комментарий от AlexM

Вопрос редактирования CMakeLists.txt это не решает, по крайней мере в текущем виде CMake Server ;)

h4tr3d ★★★★★ ()
Ответ на: комментарий от Dendy

CMake и Ninja сначала собирают кусок самого себя самопальным скриптом, а потом этим собранным огрызком дособирают всё остальное.

Не знал, спасибо.

При этом и в том, и в другом есть вариант сборки без bootstrap, для этого CMake нужен другой CMake, а Ninja — другой Ninja.

Ну это-то само собой.

question4 ★★★★★ ()

не люблю cmake, затрахаешься под ARM проект на нем пытаться собрать.

splinter ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.