Extending the Qt 6.5 base install with various extra features from sub-modules.
Building Qt 6.5 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
- Install any required dependencies
- Install any optional dependencies
- Optional: create a build directory and configure the build inside it
- Configure sources
/opt/Qt/6.5.3/bin/qt-configure-module .
- Build the sources
cmake --build . --parallel 4
- Install the result
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 | ~3h | ~6m | |||
qtimageformats | libmng-dev |
Support for loading various extra image formats TIFF, MNG, WebP |
|||||
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-11 libclang-11-dev libclang-common-11-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 ffmpeg backend: (prefered backend since 6.5.0): Note: ffmpeg backend requires pulseaudio For gstreamer backend: For pulseaudio support: For plain ALSA: |
Multimedia (audio/video) support
|
||||
qt3d | Qt 3D provides functionality for near-realtime simulation systems with support for 2D and 3D rendering in both Qt C++ and Qt Quick applications. | ||||||
qtquick3d | A high-level API for creating 3D content and 3D user interfaces based on Qt Quick | ||||||
qtquick3dphysics | A physics engine for use with Qt Quick 3D | ||||||
qtdatavis3d | |||||||
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 | Enabled peer-to-peer communication between a server (QML/C++ application) and a client (HTML/JavaScript or QML application) | |||||
qtcharts | qtdeclarative | Charting controls | ~10m | ||||
qtwayland | libwayland-dev | Wayland support | ~10m | ||||
qtvirtualkeyboard | qtsvg | Provides input framework and reference implementation for virtual on-screen keyboard. | ~4m | ||||
qtwebengine | qtdeclarative | flex bison gperf libre2-dev libnss3-dev nodejs libdrm-dev libxdamage-dev libsnappy-dev | WebEngine. | N/A | |||
qtgrpc | |||||||
qthttpserver | Qt HTTP Server | ||||||
qtspeech | Text To Speech with Flite | ||||||
qt5compat | Unsupported Qt 5 compatibility code. | ~2m |
A note about Qt submodules only in git
Some Qt submodules are not available directly as downloadable release archives, but instead are just branched/tagged in the Qt git repository. For example qtmqtt for MQTT support and qtcoap for COAP support are some of such modules. These sub-modules can all be found in the Qt git repository.
To download, for example qtmqtt, for Qt 6.5.3 you can clone the repository with:
git clone -b v6.5.3
git://code.qt.io/qt/qtmqtt.git
The configuring, compiling and installing parts goes as any other sub-module.
TL;DR Building submodules
You can quickly configure, build and install the Qt submodules with (why not do it in simple bash for loop, I'll leave that as an exercise for the reader!):
/opt/Qt/6.5/bin/qt-configure-module . && cmake --build . --parallel 4 && cmake --install .