Everything that describes what the new configuration system understands is given in the configure.json
files scattered around Qt modules. The configure
tool uses these files to build a list of command line arguments it understands.
Without the use of other tools, to learn about Qt features you need to inspect these json files and choose the features/options you wish turned on or off.
Sub Configurations
These act as includes, and refer to the configure.json
file in a given folder. E.g. qtbase/configure.json
includes qtbase/src/corelib/configure.json
, qtbase/src/network/configure.json
etc.:
"subconfigs": [
"src/corelib",
"src/network",
[...]
],
Explicit Command Line Options
The commandline/options
value lists the configure
options a given Qt module understands. These options are separate from the feature system, although they may be used for convenience to provide shorthand aliases that control features. For example, in qtbase/configure.json
, we have:
{ "commandline": { "options": { "accessibility": "boolean", [...] }
This command line option controls the identically named accessibility
feature. It is more convenient to use than dealing with the feature system's option [-no]-feature-accessibility
. The following pairs have identical effects:
-accessibility
or -feature-accessibility
-no-accessibility
or -no-feature-accessibility
Values:
boolean
options are given to configure
as -option
and -no-option
, meaning true
and false
, respectively.
- all other options are given as
-option value
.
Feature Options
The features
value lists the features available in a given module. The features are effectively booleans. They are all enabled by default, subject to passing configuration tests that enable them.
To control a feature foo
:
-no-feature-foo
disables the feature. E.g. to disable the iconv
feature, you'd do configure -no-feature-iconv [...]
.
-feature-foo
enables the feature and ensures that it is available. This will cause an error if a configuration test for the feature fails. It's useful in build systems that build a particularly configured Qt along with your application: it ensures that the features your code depends on will be available.
Failing Builds
Generally speaking, no matter what combination of feature selections you provide, if configure
doesn't fail, the build is supposed to succeed.
we'd all like to avoid wasting time on builds that will start building despite an improper configuration
The configure
tool will detect any invalid configurations. If configure
succeeds yet the build fails, it's a Qt bug and you should report it.