Qt-5.15.12

Introduction à Qt5

Qt5 est une boîte à outils multi-plate-forme qui est largement utilisée pour le développement d'application avec une interface graphique (GUI) (dans ce cas Qt5 est classé comme une boite à outils de widgets), et est également utilisée pour le développement de programmes sans interface graphique comme des outils en ligne de commande et des consoles pour serveurs. Deux des utilisations principales de Qt sont KDE Frameworks 5 (KF5) et LXQt.

This package is known to build and work properly using an LFS 12.1 platform.

Informations sur le paquet

Téléchargements supplémentaires

Dépendances de Qt5

Requises

Bibliothèques Xorg

Recommandées

Facultatives

BlueZ-5.72 (pour sdpscanner et à l'exécution, pour le module QtConnectivity), GTK+-3.24.41, ibus-1.5.29, libinput-1.25.0, MariaDB-10.11.7 or MySQL, MIT Kerberos V5-1.21.2, pciutils-3.10.0, PostgreSQL-16.2, PulseAudio-17.0, SDL2-2.30.0, unixODBC-2.3.12, Vulkan-Loader-1.3.277, assimp, Flite, Firebird, FreeTDS, libproxy, OpenAL, speech-dispatcher et tslib

Paramétrer le préfixe d'installation

Installer dans /opt/qt5

Les éditeurs de BLFS recommandent d'installer Qt5 dans un répertoire autre que /usr, par exemple /opt/qt5. Pour cela initialisez la variable d'environnement suivante :

export QT5PREFIX=/opt/qt5
[Astuce]

Astuce

Parfois, les chemins d'installation sont codés en durs dans les fichiers installés. C'est la raison pour laquelle /opt/qt5 est utilisé comme préfixe d'installation au lieu de /opt/qt-5.15.12. Pour créer un répertoire versionné de Qt5, vous devez créer un répertoire versionné et un lien symbolique :

mkdir -pv /opt/qt-5.15.12
ln -sfnv qt-5.15.12 /opt/qt5

Plus tard, vous pouvez vouloir installer d'autres versions de Qt5. Pour faire cela, supprimez juste le lien symbolique, créez le nouveau répertoire versionné et recréez le lien symbolique /opt/qt5 avant de construire la nouvelle version. La version de Qt5 que vous utilisez dépend seulement d'où pointe le lien symbolique.

[Note]

Note

Si qca-2.3.8 est installé et que vous réinstallez ou mettez à jour ce paquet, alors qca devra être réinstallé.

Installation de Qt5

[Avertissement]

Avertissement

Si Qt5 doit être réinstallé dans le même répertoire qu'une précédente installation, lancez les commandes fait par root, comme make install, depuis une console ou un gestionnaire de fenêtres non Qt5. Elle écrase les bibliothèques Qt5 qui ne devraient pas être utilisées pendant le processus d'installation.

[Attention]

Attention

Si vous n'avez pas installé certaines dépendances recommandées, examinez la sortie de ./configure --help pour vérifier comment les désactiver ou utiliser une version interne intégrée dans l'archive des sources.

[Note]

Note

Le temps et l'espace de construction requis pour tout Qt5 est considérable. Les instructions ci-dessous ne construisent pas les tutoriels et les exemples. La suppression des lignes -nomake créera une construction complète.

[Note]

Note

Les éditeurs de BLFS ne recommandent pas d'installer Qt5 dans la hiérarchie /usr car il devient difficile de trouver des composants et de mettre à jour vers une nouvelle version. Si vous voulez installer Qt5 dans /usr, les répertoires ont besoin d'être spécifiés explicitement. Dans ce cas, initialisez QT5PREFIX=/usr et ajoutez la suite aux arguments de configuration :

            -archdatadir    /usr/lib/qt5                \
            -bindir         /usr/bin                    \
            -plugindir      /usr/lib/qt5/plugins        \
            -importdir      /usr/lib/qt5/imports        \
            -headerdir      /usr/include/qt5            \
            -datadir        /usr/share/qt5              \
            -docdir         /usr/share/doc/qt5          \
            -translationdir /usr/share/qt5/translations \
            -examplesdir    /usr/share/doc/qt5/examples

Maintenant, appliquez un correctif pour récupérer les correctifs récoltés par kde pour les modules qui sont requis par les paquets mentionnés dans ce livre :

patch -Np1 -i ../qt-everywhere-opensource-src-5.15.12-kf5-1.patch

Le correctif est censé être utilisé dans un répertoire git. Sinon, certains fichiers qui doivent être modifiés par configure après l'application du correctif ne sont pas touchés. Il est suffisant de créer un répertoire .git dans le répertoire qmake, où le script configure est exécuté :

mkdir -pv qtbase/.git

Ajoutez une autre correction pour construire avec GCC-13 :

sed -e "/pragma once/a#include <cstdint>"                                      \
    -i qtlocation/src/3rdparty/mapbox-gl-native/include/mbgl/util/geometry.hpp \
       qtlocation/src/3rdparty/mapbox-gl-native/include/mbgl/util/string.hpp   \
       qtlocation/src/3rdparty/mapbox-gl-native/src/mbgl/gl/stencil_mode.hpp

Corrigez une vulnérabilité de sécurité dans qtbase :

patch -Np1 -i ../qt-everywhere-opensource-src-5.15.12-security_fix-1.patch

Installez Qt5 en exécutant les commandes suivantes :

./configure -prefix $QT5PREFIX                        \
            -sysconfdir /etc/xdg                      \
            -confirm-license                          \
            -opensource                               \
            -dbus-linked                              \
            -openssl-linked                           \
            -system-harfbuzz                          \
            -system-sqlite                            \
            -nomake examples                          \
            -no-rpath                                 \
            -syslog                                   \
            -skip qtwebengine                         &&
make

Ce paquet n'a pas de suite de tests.

Maintenant, en tant qu'utilisateur root :

make install

Supprimez les références au répertoire de construction dans les fichiers de dépendances (prl) des bibliothèques installées en exécutant la commande suivante en tant qu'utilisateur root :

find $QT5PREFIX/ -name \*.prl \
   -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d' {} \;

Installez les images et créez les entrées de menu pour les applications installées. La variable QT5BINDIR est utilisée ici pour pointer vers le répertoire pour les programmes exécutables. Si vous avez changé le bindir plus haut, QT5BINDIR doit être ajusté ci-dessous. Assurez-vous que la variable QT5BINDIR est définie dans l'environnement root et en tant qu'utilisateur root :

QT5BINDIR=$QT5PREFIX/bin

install -v -dm755 /usr/share/pixmaps/                  &&

install -v -Dm644 qttools/src/assistant/assistant/images/assistant-128.png \
                  /usr/share/pixmaps/assistant-qt5.png &&

install -v -Dm644 qttools/src/designer/src/designer/images/designer.png \
                  /usr/share/pixmaps/designer-qt5.png  &&

install -v -Dm644 qttools/src/linguist/linguist/images/icons/linguist-128-32.png \
                  /usr/share/pixmaps/linguist-qt5.png  &&

install -v -Dm644 qttools/src/qdbus/qdbusviewer/images/qdbusviewer-128.png \
                  /usr/share/pixmaps/qdbusviewer-qt5.png &&

install -dm755 /usr/share/applications &&

cat > /usr/share/applications/assistant-qt5.desktop << EOF
[Desktop Entry]
Name=Qt5 Assistant
Comment=Shows Qt5 documentation and examples
Exec=$QT5BINDIR/assistant
Icon=assistant-qt5.png
Terminal=false
Encoding=UTF-8
Type=Application
Categories=Qt;Development;Documentation;
EOF

cat > /usr/share/applications/designer-qt5.desktop << EOF
[Desktop Entry]
Name=Qt5 Designer
GenericName=Interface Designer
Comment=Design GUIs for Qt5 applications
Exec=$QT5BINDIR/designer
Icon=designer-qt5.png
MimeType=application/x-designer;
Terminal=false
Encoding=UTF-8
Type=Application
Categories=Qt;Development;
EOF

cat > /usr/share/applications/linguist-qt5.desktop << EOF
[Desktop Entry]
Name=Qt5 Linguist
Comment=Add translations to Qt5 applications
Exec=$QT5BINDIR/linguist
Icon=linguist-qt5.png
MimeType=text/vnd.trolltech.linguist;application/x-linguist;
Terminal=false
Encoding=UTF-8
Type=Application
Categories=Qt;Development;
EOF

cat > /usr/share/applications/qdbusviewer-qt5.desktop << EOF
[Desktop Entry]
Name=Qt5 QDbusViewer
GenericName=D-Bus Debugger
Comment=Debug D-Bus applications
Exec=$QT5BINDIR/qdbusviewer
Icon=qdbusviewer-qt5.png
Terminal=false
Encoding=UTF-8
Type=Application
Categories=Qt;Development;Debugger;
EOF

Certains paquets comme VLC-3.0.20 cherchent certains exécutables avec un suffix -qt5. Exécutez la commande suivante en tant qu'utilisateur root pour créer les liens symboliques nécessaires :

for file in moc uic rcc qmake lconvert lrelease lupdate; do
  ln -sfvn $QT5BINDIR/$file /usr/bin/$file-qt5
done

Explication des commandes

-confirm-license : accepte la licence sans demander à l'utilisateur pendant la configuration.

-opensource : Installez la version opensource de Qt.

-nomake examples : ce paramètre désactive la construction des programmes d'exemple inclus dans l'archive des sources. Supprimez-le si vous voulez les construire.

-system-sqlite : ce paramètre active l'utilisation de la version du système de SQLite.

-dbus-linked -openssl-linked : ces paramètres activent explicitement la liaison des bibliothèques D-Bus et OpenSSL aux bibliothèques Qt5 au lieu d'utiliser dlopen().

-syslog : ce paramètre permet d'envoyer les messages de Qt vers le système de journalisation syslog.

-skip qtwebengine : Ce paramètre désactive la construction de QtWebEngine. Les éditeurs de BLFS ont choisi de construire qtwebengine-5.15.17 séparément.

-system-harfbuzz : ce paramètre active l'utilisation de la version système de Harfbuzz.

Configuration de Qt5

Informations sur la configuration

Si Sudo-1.9.15p5 est installé, QT5DIR devrait également être disponible pour le super utilisateur. Exécutez les commandes suivantes en tant qu'utilisateur root :

cat > /etc/sudoers.d/qt << "EOF"
Defaults env_keep += QT5DIR
EOF

Si vous avez installé Qt5 dans /usr

Si vous avez installé Qt5 dans /usr, créez une variable d'environnement utilisée par certains paquets. En tant qu'utilisateur root :

cat > /etc/profile.d/qt5.sh << "EOF"
# Begin /etc/profile.d/qt5.sh

QT5DIR=/usr
export QT5DIR

# End /etc/profile.d/qt5.sh
EOF

Si vous n'avez pas installé Qt5 dans /usr

Si vous avez installé Qt5 dans un emplacement autre que /usr, vous devez mettre à jour les fichiers de configuration suivant pour que Qt5 soit correctement trouvé par les autres paquet et les processus systèmes.

En tant qu'utilisateur root, mettez à jour le fichier /etc/ld.so.conf et le fichier de cache à l'exécution de l'éditeur des liens dynamique :

cat >> /etc/ld.so.conf << EOF
# Begin Qt addition

/opt/qt5/lib

# End Qt addition
EOF

ldconfig

En tant qu'utilisateur root, créez le fichier /etc/profile.d/qt5.sh :

cat > /etc/profile.d/qt5.sh << "EOF"
# Begin /etc/profile.d/qt5.sh

QT5DIR=/opt/qt5

pathappend $QT5DIR/bin           PATH
pathappend $QT5DIR/lib/pkgconfig PKG_CONFIG_PATH

export QT5DIR

# End /etc/profile.d/qt5.sh
EOF

Contenu

Programmes installés: assistant, balsam, canbusutil, designer, fixqt4headers.pl, lconvert, linguist, lprodump, lrelease, lrelease-pro, lupdate, lupdate-pro, meshdebug, moc, pixeltool, qcollectiongenerator, qdbus, qdbuscpp2xml, qdbusviewer, qdbusxml2cpp, qdistancefieldgenerator, qdoc, qgltf, qhelpgenerator, qlalr, qmake, qml, qmlcachegen, qmleasing, qmlformat, qmlimportscanner, qmllint, qmlmin, qmlplugindump, qmlpreview, qmlprofiler, qmlscene, qmltestrunner, qmltime, qmltyperegistrar, qscxmlc, qtattributionscanner, qtdiag, qtpaths, qtplugininfo, qtwaylandscanner, qvkgen, rcc, repc, sdpscanner, syncqt.pl, tracegen, uic, xmlpatterns et xmlpatternsvalidator
Bibliothèques installées: libQt53DAnimation.so, libQt53DCore.so, libQt53DExtras.so, libQt53DInput.so, libQt53DLogic.so, libQt53DQuick.so, libQt53DQuickAnimation.so, libQt53DQuickExtras.so, libQt53DQuickInput.so, libQt53DQuickRender.so, libQt53DQuickScene2D.so, libQt53DRender.so, libQt5AccessibilitySupport.a, libQt5Bluetooth.so, libQt5Bodymovin.so, libQt5Bootstrap.a, libQt5Charts.so, libQt5Concurrent.so, libQt5Core.so, libQt5DataVisualization.so, libQt5DBus.so, libQt5DesignerComponents.so, libQt5Designer.so, libQt5DeviceDiscoverySupport.a, libQt5EdidSupport.a, libQt5EglFSDeviceIntegration.so, libQt5EglFsKmsSupport.so, libQt5EglSupport.a, libQt5EventDispatcherSupport.a, libQt5FbSupport.a, libQt5FontDatabaseSupport.a, libQt5Gamepad.so, libQt5GlxSupport.a, libQt5Gui.so,libQt5Help.so, libQt5InputSupport.a, libQt5KmsSupport.a, libQt5LinuxAccessibilitySupport.a, libQt5Location.so, libQt5Multimedia.so, libQt5MultimediaGstTools.so, libQt5MultimediaQuick.so, libQt5MultimediaWidgets.so, libQt5Network.so, libQt5NetworkAuth.so, libQt5Nfc.so, libQt5OpenGLExtensions.a, libQt5OpenGL.so, libQt5PacketProtocol.a, libQt5PlatformCompositorSupport.a, libQt5Positioning.so, libQt5PositioningQuick.so, libQt5PrintSupport.so, libQt5Purchasing.so, libQt5Qml.so, libQt5QmlDebug.a, libQt5QmlDevTools.a, libQt5QmlModels.so, libQt5QmlWorkerScript.so, libQt5Quick.so, libQt5Quick3D.so, libQt5Quick3DAssetImport.so, libQt5Quick3DRender.so, libQt5Quick3DRuntimeRender.so, libQt5Quick3DUtils.so, libQt5QuickControls2.so, libQt5QuickParticles.so, libQt5QuickShapes.so, libQt5QuickTemplates2.so, libQt5QuickTest.so, libQt5QuickWidgets.so, libQt5RemoteObjects.so, libQt5Script.so, libQt5ScriptTools.so, libQt5Scxml.so, libQt5Sensors.so, libQt5SerialBus.so, libQt5SerialPort.so, libQt5ServiceSupport.a, libQt5Sql.so, libQt5Svg.so, libQt5Test.so, libQt5TextToSpeech.so, libQt5ThemeSupport.a, libQt5UiTools.a, libQt5VirtualKeyboard.so, libQt5VulkanSupport.a, libQt5WaylandClient.so, libQt5WaylandCompositor.so, libQt5WebChannel.so, libQt5WebSockets.so, libQt5WebView.so, libQt5Widgets.so, libQt5X11Extras.so, libQt5XcbQpa.so, libQt5XkbCommonSupport.a, libQt5Xml.so, libQt5XmlPatterns.so et plusieurs greffons dans /opt/qt5/{plugins,qml}
Répertoires installés: /usr/include/qt5, /usr/lib/qt5, /usr/share/doc/qt5 et /usr/share/qt5 OU /opt/qt5 et /opt/qt-5.15.12

Descriptions courtes

assistant

est un outil pour présenter la documentation en ligne

balsam

est un outil pour convertir des scènes 3D de divers outils de création vers le format QML, utilisé par la nouvelle bibliothèque QtQuick 3D.

canbustil

est un outil pour gérer des trames de bus CAN arbitraires. Un CAN (Controller Area Network) est un standard de bus de transport conçu pour permettre à des microcontrôleurs et des périphériques de communiquer entre eux dans des applications sans ordinateur hôte

designer

est un constructeur complet de GUI. Il inclut des possibilités puissantes comme le mode de prévisualisation, la couche de boutons automatiques, le support des boutons personnalisés et un éditeur de propriétés avancées

fixqt4headers.pl

est un script qui remplace toutes les inclusions de style Qt 4 en inclusions Qt 5

lconvert

fait partie de la chaîne d'outils linguistique de Qt5. Il peut être utilisé comme un outil seul pour convertir et filtrer les fichiers de données de traduction

linguist

fournit un support de traduction d'applications en langues locales

lrelease

est un outil simple en ligne de commande. Il lit un fichier de traduction au format TS (basé sur le format XML) et produit des fichiers de message utilisés par l'application

lrelease-pro

extrait les information d'un projet qmake et les passe à lrelease

lupdate

cherche les chaînes traduisibles dans les sources, les en-têtes et les fichiers d'interface Qt Designer spécifiés et enregistre les messages extraits dans des fichiers de traduction qui seront traités par lrelease

lupdate-pro

lit un fichier de projet Qt, et passe les informations collectées à lupdate

meshdebug

affiche les informations sur les fichiers mesh de qtquick-3d

moc

génère le support du code des méta-objets Qt

pixeltool

est une loupe de bureau et, quand vous déplacez votre souris sur l'écran, elle vous montrera le contenu agrandi dans sa fenêtre

qcollectiongenerator

traite et convertit les fichiers d'aide Qt

qdbuscpp2xml

prend un fichier source C++ et génère une définition D-Bus XML de cette interface

qdbus

liste les services disponibles, les chemins des objets, les méthodes, les signaux, et les propriétés des objets sur un bus

qdbusviewer

est un navigateur graphique D-Bus

qdbusxml2cpp

est un outil qui peut être utilisé pour analyser les descriptions de l'interface et produire du code statique représentant ces interfaces.

qdistancefieldgenerator

permet la prégénération d'un cache de polices pour Text.QtRendering pour accélérer le démarrage d'une application sur l'interface utilisateur a beaucoup de textes ou plusieurs polices, ou un grand nombre de caractères distincts comme pour les systèmes d'écriture CJK

qdoc

est un outil utilisé par les développeurs de Qt pour générer de la documentation pour les projets logiciels

qgltf

importe un ensemble de formats de modèles 3D et les exporte en ressources glTF rapides à charger et optimisées incluses dans les fichiers de ressources Qt

qhelpgenerator

est un outil utilisé pour générer un fichier d'aide compressé de Qt

qlalr

est un outil utilisé pour générer du code depuis des spécifications grammaticales

qmake

utilise des informations stockées dans des fichiers de projet pour déterminer ce qui devrait aller dans les makefiles qu'il génère

qml

exécute un fichier QML

qmlcachegen

supporte la création de fichiers de cache à la construction

qmleasing

est un outil utilisé pour définir facilement une courbe en utilisant un éditeur de courbes interactif

qmlformat

formate des fichiers QML en fonction des conventions de codage de QML

qmlimportscanner

est un outil utilisé pour importer des fichiers QML depuis un répertoire

qmllint

est un vérificateur de syntaxe pour les fichiers QML

qmlmin

supprime les commentaires et les mises en forme de caractères d'un fichier QML

qmlplugindump

est un outil pour créer un fichier qmltypes

qmlpreview

est un outil utilisé pour analyser les applications QML

qmlprofiler

est un outil qui surveille les fichiers QML et JavaScript sur le disque et met à jour l'application en direct en cas de changement

qmlscene

est un utilitaire qui charge et affiche les documents QML avant que l'application ne soit terminée

qmltestrunner

est un outil utilisé pour faire des tests

qscxml

convertit un fichier input.scxml en un fichier d'en-tête et cpp

qtattributionsscanner

traite les fichiers qt_attribution.json dans les sources Qt

qtdiag

est un outil pour afficher des informations de diagnostics à propos de Qt et son environnement

qtpaths

est un outil pour obtenir des informations sur le chemin de Qt

qtplugininfo

affiche les métadonnées des greffons Qt au format JSON

qtwaylandscanner

convertit les fichiers de spécification de Wayland en en-têtes C++ et en code requis pour QtWayland

qvkgen

convertit les fichiers de spécification Vulkan en en-têtes et code C++

rcc

est un compilateur de ressources utilisé avec le designer

repc

est le compilateur replica, qui génère des fichiers d'en-têtes QObject basés sur un fichier de définition d'API

sdpscanner

effectue un scan Session Description Protocol sur un appareil distant, en utilisant le serveur SDP représenté par un appareil Bluetooth local

syncqt.pl

est un script pour créer les entêtes des répertoires include. C'est un outil de développement interne

tracegen

est un générateur de trace pour LTTng ou ETW

uic

est un compilateur d'interface utilisateur Qt

xmlpatterns

fournit le support pour XPath, XQuery, XSLT, et les schémas de validation XML

xmlpatternsvalidator

est un outil utilisé pour valider des documents XML