Compilation d'une version optimisée de Qt
Cette page décrit le processus de configuration et de compilation d'une version allégée et personnalisée de Qt, en fonction de vos besoins spécifiques.
Étape 1 : Obtenir les sources, installer les dépendances nécessaires à la compilation et configurer l'environnement
Pour obtenir les sources, installer les dépendances et configurer l'environnement, reportez-vous aux instructions spécifiques à votre plateforme :
- Qt pour Windows - Compilation à partir des sources
- Qt pour macOS - Compilation à partir du code source
- Qt pour Linux - Compilation à partir du code source
- Configurer un appareil Linux embarqué
- Qt pour Android - Compilation à partir du code source
- Qt pour iOS - Compilation à partir du code source
Étape 2 : Compilation des bibliothèques et des outils Qt
Suivez les instructions spécifiques à votre plateforme et utilisez les options de configuration Qt suivantes pour créer une version optimisée en fonction de vos besoins.
Le tableau ci-dessous décrit plus en détail les options de configuration permettant de réduire la taille de la compilation.
| Option de configuration Qt | Description |
|---|---|
| -static | Génère des fichiers d'archive pour une liaison statique. Un binaire statique est lié à toutes les bibliothèques et dépendances nécessaires intégrées au sein même du fichier exécutable. Cela signifie que lorsque vous exécutez le programme, celui-ci utilise sa propre copie interne des bibliothèques requises, 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. Il s'agit de la solution la plus optimale pour les livraisons comprenant un seul exécutable. |
| -ltcg | L'optimisation à la liaison (LTO) est une technique puissante qui permet d'améliorer considérablement les performances et de réduire la taille de votre fichier exécutable en analysant et en optimisant le code binaire lors de la phase de liaison. |
| -reduce-exports | Réduit le nombre de symboles exportés. |
| -gc-binaries | Supprime les parties inutiles du binaire. Place chaque fonction ou élément de données dans sa propre section et active le ramasse-miettes de l’éditeur de liens pour les sections inutilisées. |
| -submodules qtbase,qtdeclarative,qtqmlscriptcompiler,qtsvg | Sous-modules à compiler. Limiter les dépendances aux fonctionnalités non nécessaires. |
| -skip qtlanguageserver,qtquicktimeline | Supprimer les sous-modules inclus automatiquement de la compilation. Limiter les dépendances aux fonctionnalités non nécessaires. |
| -disable-deprecated-up-to <version> | Supprime les implémentations obsolètes. Définit la valeur de l'QT_DISABLE_DEPRECATED_UP_TO e sur <version>. L'option « QT_DISABLE_DEPRECATED_UP_TO » sert à supprimer les méthodes obsolètes à la fois de l'API et de l'ABI. <version> est une valeur hexadécimale. Par exemple, utilisez 0x070000 pour supprimer tout le code obsolète dans Qt 7.0.0 ou les versions antérieures. Par défaut, <version> est défini sur 0x040000 sous Windows et sur 0x050000 sur les autres systèmes d'exploitation. |
De plus, 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 concernant les composants et fonctionnalités disponibles. Toutes les combinaisons ne sont pas testées. Qt teste des combinaisons minimales spécifiques d’options de configuration dans son système d’intégration continue (CI) ; il teste une configuration Linux embarquée hautement allégée, ainsi que des configurations légèrement moins allégées pour les autres plateformes. Ces configurations sont destinées à l’exécution d’applications Quick.
La commande `configure` de Qt prend également en charge 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"`. En cas de compilation croisée, ces paramètres peuvent être ajoutés via -DCMAKE_TOOLCHAIN_FILE=chemin/vers/toolchain.cmake, comme décrit dans la section « Exemple de fichier de chaîne d’outils ». Le tableau suivant répertorie certaines options que vous pouvez envisager d’utiliser avec GCC :
| Option du compilateur | Description |
|---|---|
| -march <arch> | Architecture cible. Utilisez « native » si l'application est exécutée sur la même architecture que celle sur laquelle elle est compilée. |
| -mtune <tune> | Indique au compilateur de générer du code tirant parti des caractéristiques de l'architecture du processeur spécifiée, telles que son jeu d'instructions, le nombre de registres et la hiérarchie du cache. |
| -fno-asynchronous-unwind-tables | Réduit la taille du binaire. Gardez à l’esprit que la désactivation des tables de déroulement asynchrones peut avoir des répercussions 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 évalué ses effets potentiels. |
| -fno-unwind-tables | Réduit la taille du binaire. Gardez à l’esprit que la désactivation des tables de déroulement peut avoir des répercussions 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 évalué ses effets potentiels. Il convient de noter que l’option ` |
| -fomit-frame-pointer | Réduit la taille du binaire. Lorsque cette option est activée, le compilateur ne stocke pas de pointeur de trame sur la pile pour chaque appel de fonction. À la place, il utilise le pointeur de pile comme pointeur de trame, 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 par défaut l’option « -fomit-frame-pointer » lors de la compilation pour certaines architectures, comme ARM et PowerPC, ou dans certains modes d’optimisation. |
| -fno-exceptions | Réduit la taille du binaire. 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’intercepter des exceptions entraîne des erreurs d’exécution. Qt fonctionne lui-même sans exceptions, mais certaines dépendances peuvent en nécessiter. |
| -no-pie | Réduit la taille du binaire. En général, l’ -fno-pie doit être utilisé avec prudence et uniquement lorsque cela est nécessaire, car il peut avoir des implications sur la compatibilité et les performances de votre code compilé. Un exécutable indépendant de la position renforce également la sécurité. Pour plus d’informations sur le code indépendant de la position, consultez l’article « Address Space Layout Randomization » sur Wikipédia. |
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 du binaire. En règle générale, l’option « -fno-pie » doit être utilisée avec prudence et uniquement lorsque cela est nécessaire, car elle peut avoir des répercussions sur la compatibilité et les performances de votre code compilé. Les exécutables indépendants de la position renforcent également la sécurité. Pour plus d’informations sur le code indépendant de la position, consultez l’article « Address Space Layout Randomization » sur Wikipédia. |
Étape 3 : Compilation de votre application
Une fois Qt installé, vous pouvez commencer à créer des applications avec cet outil.
Optimisez la génération de code QML à l'aide des commandes de projet CMake. Pour plus d'informations sur la génération de code QML, consultez les pages « qt_add_qml_module » et « Bonnes pratiques pour QML et l'Qt Quick ».
La commande figurant dans l'extrait de code CMake suivant permet de réduire la taille du binaire :
set_target_properties(
ExampleApp
PROPERTIES
QT_QMLCACHEGEN_ARGUMENTS "--only-bytecode"
)Si vous prévoyez de compiler votre application à partir d'un IDE, vous devez y enregistrer explicitement la version de Qt :
- Pour Qt Creator, consultez Qt Creator: Ajouter des versions de Qt.
- Pour Qt Extension for Visual Studio Code, consultez Qt Extension for Visual Studio Code: Enregistrer les installations Qt.
Si vous utilisez la ligne de commande pour compiler votre application, suivez le guide spécifique à votre 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.