Construire une version optimisée de Qt
Cette page décrit le processus de configuration et de construction d'une version réduite et adaptée de Qt, en fonction de vos besoins spécifiques.
Étape 1 : Obtenir les sources, installer les exigences de construction et définir l'environnement
Pour l'obtention des sources, l'installation des dépendances et la configuration de l'environnement, se référer aux instructions spécifiques à la plateforme :
- Qt pour Windows - Construire à partir des sources
- Qt pour macOS - Construire à partir des sources
- Qt pour Linux - Construction à partir des sources
- Configurer un dispositif Linux embarqué
- Qt pour Android - Création à partir des sources
- Qt pour iOS - Construction à partir des sources
Étape 2 : Construction des bibliothèques et des outils Qt
Suivez les instructions spécifiques à votre plateforme et utilisez les options de configuration de Qt suivantes pour créer une compilation optimisée pour vos besoins.
Le tableau suivant décrit plus en détail les options de configuration qui permettent de réduire la taille de la compilation.
| Option de configuration de Qt | Description |
|---|---|
| -static | Produire des fichiers d'archive pour l'édition de liens statiques. Un binaire statique est lié avec toutes les bibliothèques et dépendances nécessaires intégrées dans le fichier exécutable lui-même. Cela signifie que lorsque vous exécutez le programme, il utilise sa propre copie interne des bibliothèques nécessaires, plutôt que de s'appuyer sur des bibliothèques externes. Cela permet à l'éditeur de liens de supprimer les parties inutiles du code binaire. C'est la solution la plus optimale pour les livraisons d'un seul exécutable. |
| -ltcg | Link Time Optimization (LTO) est une technique puissante qui peut améliorer de manière significative les performances et réduire la taille de votre fichier exécutable en analysant et en optimisant le code binaire à l'étape de l'édition de liens. |
| -reduce-exports | Réduit la quantité de symboles exportés. |
| -gc-binaries | Supprime les parties inutiles du code binaire. Placez chaque fonction ou élément de données dans sa propre section et activez le ramassage des sections inutilisées par l'éditeur de liens. |
| -submodules qtbase,qtdeclarative,qtqmlscriptcompiler,qtsvg | Sous-modules à compiler. Limiter les dépendances aux fonctionnalités inutiles. |
| -skip qtlanguageserver,qtquicktimeline | Supprime de la compilation les sous-modules inclus automatiquement. Limiter les dépendances aux fonctionnalités inutiles. |
| -disable-deprecated-up-to <version> (désactivation de l'implémentation obsolète jusqu'à <version>) | Supprime les implémentations obsolètes. Définit la valeur QT_DISABLE_DEPRECATED_UP_TO à <version>. QT_DISABLE_DEPRECATED_UP_TO est utilisé pour supprimer les méthodes obsolètes de l'API et de l'ABI. <version> est une valeur hexadécimale. Par exemple, utilisez 0x070000 pour supprimer tout le code qui est obsolète dans Qt 7.0.0 ou les versions antérieures. Par défaut, <version> est défini à 0x040000 et 0x050000 sur Windows et non-Windows respectivement. |
En outre, vous pouvez supprimer des fonctionnalités une par une, comme décrit dans la section Inclure ou exclure des fonctionnalités. Cela peut entraîner des restrictions au niveau des composants et des fonctionnalités disponibles. Toutes les combinaisons ne sont pas testées. Qt Test teste des combinaisons spécifiques d'options de configuration minimale dans le système d'intégration continue (CI) ; il teste une configuration Linux embarquée hautement minimisée, et des configurations légèrement moins minimisées pour d'autres plateformes. Ces configurations sont destinées à l'exécution d'applications Quick.
La commande Qt configure supporte également le paramètre de ligne de commande - - (double tiret) qui permet à l'utilisateur d'injecter des arguments CMake supplémentaires tels que -DCMAKE_CXX_FLAGS="-march=native". Dans le cas d'une compilation croisée, ces paramètres peuvent être ajoutés via -DCMAKE_TOOLCHAIN_FILE=path/to/toolchain.cmake comme décrit dans An Example Toolchain File. Le tableau suivant liste quelques options que vous pouvez envisager d'utiliser avec GCC :
| Option du compilateur | Description de l'option |
|---|---|
| -march <arch> | Architecture cible. Utilisez "native" si l'application est exécutée sur la même architecture que celle sur laquelle elle a été compilée. |
| -mtune <tune> | Indique au compilateur de générer un code qui tire parti des caractéristiques de l'architecture du processeur spécifié, telles que le jeu d'instructions, le nombre de registres et la hiérarchie de la mémoire cache. |
| -fno-asynchronous-unwind-tables | Réduit la taille des binaires. N'oubliez pas que la désactivation des tables de déroulement asynchrones peut avoir des conséquences sur les performances, la compatibilité et la maintenabilité de votre code. Il est généralement recommandé de n'utiliser cette option qu'en cas de nécessité, après avoir soigneusement étudié ses effets potentiels. |
| -fno-unwind-tables | Réduit la taille des binaires. Gardez à l'esprit que la désactivation des tables de déroulement peut avoir des conséquences sur les performances, la compatibilité et la maintenabilité de votre code. Il est généralement recommandé de n'utiliser cette option qu'en cas de nécessité, après avoir soigneusement étudié ses effets potentiels. Il convient de noter que |
| -fomit-frame-pointer | Réduit la taille des binaires. Lorsque cette option est activée, le compilateur ne stocke pas de pointeur de cadre sur la pile pour chaque appel de fonction. À la place, il utilise le pointeur de pile comme pointeur de cadre, ce qui permet d'économiser de la mémoire et d'améliorer les performances. Il convient de noter que certains compilateurs, tels que GCC et Clang, activent -fomit-frame-pointer par défaut lors de la compilation pour certaines architectures, telles que ARM et PowerPC, ou dans certains modes d'optimisation. |
| -fno-exceptions | Réduit la taille des binaires. Lorsque cette option est activée, le compilateur ne génère pas de code pour les blocs try-catch, et toute tentative de lancer ou d'attraper des exceptions entraîne des erreurs d'exécution. Qt lui-même fonctionne sans exception, mais certaines dépendances peuvent nécessiter des exceptions. |
| -no-pie | Réduit la taille des binaires. En général, -fno-pie doit être utilisé avec prudence et uniquement lorsque c'est nécessaire, car cela peut avoir des conséquences sur la compatibilité et les performances de votre code compilé. L'exécutable indépendant de la position ajoute également de la sécurité. Pour plus d'informations sur le code indépendant de la position, voir Address Space Layout Randomization dans Wikipedia. |
Le tableau suivant répertorie les options de l'éditeur de liens :
| Option de l'éditeur de liens | Description |
|---|---|
| -no-pie | Réduit la taille des binaires. En général, -fno-pie doit être utilisé avec prudence et uniquement lorsque c'est nécessaire, car cela peut avoir des conséquences sur la compatibilité et les performances de votre code compilé. L'exécutable indépendant de la position ajoute également de la sécurité. Pour plus d'informations sur le code indépendant de la position, reportez-vous à Address Space Layout Randomization dans Wikipedia. |
Étape 3 : Création de votre application
Une fois Qt installé, vous pouvez commencer à créer des applications.
Optimisez la génération de code QML avec les commandes de projet CMake. Pour plus d'informations sur la génération de code QML, voir qt_add_qml_module et Best Practices for QML and Qt Quick.
La commande de l'extrait de code CMake suivant réduit la taille du binaire :
set_target_properties(
ExampleApp
PROPERTIES
QT_QMLCACHEGEN_ARGUMENTS "--only-bytecode"
)Si vous prévoyez de construire votre application à partir d'un IDE, vous devez y enregistrer explicitement la version de Qt. Pour Qt Creator, voir Qt Creator: Ajouter des versions de Qt.
Si vous utilisez la ligne de commande pour construire votre application, suivez le guide spécifique à la plateforme.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.