Qt Lite и изменения конфигурации в Qt 5.8

Как утверждается, инструмент настройки для Qt прошел некоторые изменения, необходимые, чтобы иметь возможность создавать более упорядоченные сборки Qt, a.k.a "Qt Lite". Тем не менее, похоже, нет какой-либо документации о том, как использовать эту функцию, или, по крайней мере, я ее не найду, и смотрю комментарии к объявлению о выпуске, другие не могут этого сделать.

Что еще, изменения, безусловно, там, судя по тому, что конфигурация, которую я использую последние пару лет, терпит неудачу несколькими путями. Я не уверен, насколько обновлена ​​встроенная справка, так как в последний раз, когда я пытался использовать ее для руководства, оказалось, что она в значительной степени устарела и содержит параметры, которые больше не поддерживаются.

Итак, было бы неплохо, если бы кто-то мог пролить свет на то, что изменилось, и как и как настроить для "Lite" сборки. И особенно в зависимости от модулей и функций, потому что я думаю, что мы все хотели бы избежать траты времени на сборках, которые начнут строить, несмотря на неправильную конфигурацию, которая пропускает необходимые зависимости только для того, чтобы она неизбежно потерпела неудачу и не принесла ничего, кроме пустой траты времени.

Ответ 1

В списке изменений:

  • Конфигурационная система была переписана почти с нуля. Это улучшило согласованность между сборками в Unix и Windows, но возможны и незначительные непредвиденные изменения поведения. Кроме того, некоторые устаревшие параметры были полностью удалены и теперь будут вызывать ошибки.
  • Больше не допустимо вручную #define QT_NO_ в любом месте. Вместо этого следует использовать параметры -no-feature- *. Обратите внимание, что это не относится к определениям, которые чем полное удаление функций.
  • Семейство опций -no-feature- * было интегрировано с остальной частью системы конфигурации. Многочисленные существующие функции были сделаны необязательными, и были устранены проблемы сборки в различных уменьшенных конфигурациях. Это постоянное усилие, известное как "Qt Lite".

Функции для -no-feature-* списков находятся в qtbase\src\corelib\global\qfeatures.txt.

Все функции включены по умолчанию.

Более подробную информацию можно найти в Обзор Qt Lite Overview и слайды.

Вы также можете использовать новый инструмент пользовательского интерфейса, который известен как Qt Configuration Tool и входит в состав Qt для встроенных устройств - см. его документация. Инструмент настройки доступен для коммерческих клиентов Qt только в настоящий момент (Qt 5.8).

Ответ 2

Изменения, которые находятся за моей неудачной конфигурацией:

  • больше нет возможности указать, является ли поддержка sql встроенной или подключаемой программой, поэтому формат теперь просто -sql-<driver>, документация по-прежнему не обновляется и отображает старый формат - -<option>-sql-<driver>.

  • опция -l для добавления конкретной библиотеки была удалена, которая оказывается проблематичной в нескольких областях.

Изменить: Кроме того, эта запись в блоге, которая была отправлена ​​только при создании Lite-сборки, может быть полезна.

Ответ 3

Все, что описывает то, что понимает новая система конфигурации, приведено в файлах configure.json, разбросанных по модулям Qt. Инструмент configure использует эти файлы для создания списка аргументов командной строки, которые он понимает.

Без использования других инструментов, чтобы узнать о функциях Qt, вам необходимо проверить эти json файлы и выбрать функции/опции, которые вы хотите включить или выключить.

Sub Configurations

Эти действия включают в себя и относятся к файлу configure.json в данной папке. Например. qtbase/configure.json включает qtbase/src/corelib/configure.json, qtbase/src/network/configure.json и т.д.:

"subconfigs": [
    "src/corelib",
    "src/network",
    [...]
],

Параметры явной командной строки

В значении commandline/options перечислены опции configure, которые понимает данный модуль Qt. Эти параметры отделены от системы функций, хотя они могут быть использованы для удобства предоставления сокращенных псевдонимов, которые контролируют функции. Например, в qtbase/configure.json мы имеем:

{ "commandline": { "options": { "accessibility": "boolean", [...] }

Этот параметр командной строки управляет идентичной функцией accessibility. Это более удобно использовать, чем использовать опцию системы функций [-no]-feature-accessibility. Следующие пары имеют одинаковые эффекты:

  • -accessibility или -feature-accessibility
  • -no-accessibility или -no-feature-accessibility

значения:

  • boolean параметры присваиваются configure как -option и -no-option, что означает true и false соответственно.
  • все остальные параметры указаны как -option value.

Параметры функций

В значении features перечислены функции, доступные в данном модуле. Функции эффективно булевы. Все они включены по умолчанию, при условии прохождения тестов конфигурации, которые позволяют их.

Для управления функцией foo:

  • -no-feature-foo отключает эту функцию. Например. для отключения функции iconv выполните configure -no-feature-iconv [...].
  • -feature-foo позволяет использовать эту функцию и обеспечивает ее доступность. Это вызовет ошибку, если тест конфигурации для этой функции не удался. Он полезен в системах построения, которые создают специально сконфигурированный Qt вместе с вашим приложением: он гарантирует, что функции, зависящие от вашего кода, будут доступны.

Сбой сборки

Вообще говоря, независимо от того, какую комбинацию параметров выбора вы предоставляете, если configure не терпит неудачу, предполагается, что сборка будет успешной.

мы все хотели бы избежать траты времени на сборках, которые начнут строить, несмотря на неправильную конфигурацию

Инструмент configure обнаружит любые недопустимые конфигурации. Если configure преуспевает, но сборка завершается неудачно, это ошибка Qt, и вы должны сообщить об этом.