Extending the Qt 6.2 base install with various extra features from sub-modules.
Building Qt 6.2 submodules
Qt submodules contains various extra features not included in the base package, for example QtQuick, support for Wayland, CAN-BUS and so forth. For most parts, building the submodules is quite straightforward:
- download the source for the submodule you require
- extract the archive
tar xf submodule-version.tar.xz
- configure sources
/opt/Qt/6.2.4-armv7l/bin/qt-configure-module .
- build the sources
/opt/cmake/bin/cmake --build . --parallel 4
- install the result
/opt/cmake/bin/cmake --install .
The only thing you need to keep in mind is to build them in the correct order to satisfy various dependencies. The following (incomplete at this time) table describes the required dependency submodules and any development packages that are needed and also the build time on various systems.
Module | Required submodules | Development packages required | Description |
Build time Pi 4 |
Build time Pine 64 |
Build time Pi 3 |
Build time AMD Ryzen 3600X |
---|---|---|---|---|---|---|---|
qtbase | Qt core, start with this | ~50m | 184m | ||||
qtimageformats | libmng-dev libjasper-dev | Support for loading various extra image formats | |||||
qtsvg | Support for SVG vector graphics | ||||||
qtshadertools | Tools for the cross-platform Qt shader pipeline | ~12m | |||||
qttools | qtdeclarative |
QDoc requires clang to be installed (See section about documentation above): clang-9 libclang-9-dev |
Various Qt tools:
|
||||
qtserialbus | Serial bus (CAN bus, ModBus) support | ~2m | |||||
qtserialport | qtserialbus | Serial port support | < 1m | ||||
qtlocation | qtserialport | Positioning (GPS) and location (Map) services | < 3m | ||||
qtdeclarative | qtshadertools | Qt Quick / QML | ~85m | ~6m | |||
qtmultimedia | qtdeclarative |
For gstreamer backend: For pulseaudio support: For plain ALSA: |
Multimedia (audio/video) support
|
||||
qtsensors | qtmultimedia | Support for various device sensors | |||||
qtnetworkauth | Network authentication protocol support (OAuth) | < 1m | |||||
qtconnectivity | bluez libbluetooth-dev | Bluetooth and NFC connectivity support | |||||
qtwebsockets | qtdeclarative | Websockets support | ~1m | ||||
qtwebchannel | qtwebsockets | ||||||
qtcharts | qtdeclarative | Charting controls | ~10m | ||||
qtwayland | libwayland-dev | Wayland support | ~10m | ||||
qtvirtualkeyboard | qtsvg | Provides on-screen keyboard | ~4m | ||||
qtwebengine | qtdeclarative | flex bison gperf libre2-dev libnss3-dev nodejs libdrm-dev libxdamage-dev libsnappy-dev | WebEngine. Has build issues with old gcc versions. |
N/A | |||
qt5compat | Unsupported Qt 5 compatibility code. | ~2m |
TL;DR Building submodules
You can quickly configure, build and install the Qt submodules with (why not do it in simple for loop, I'll leave that as an excerise for the reader!):
/opt/Qt/6.2.4-armv7l/bin/qt-configure-module . && /opt/cmake/bin/cmake --build . --parallel 4 && /opt/cmake/bin/cmake --install .