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, и вы должны сообщить об этом.