Sur cette page

Modifications apportées au système de compilation dans Qt 6

Une grande partie du travail consacré à Qt 6 concernait la manière dont Qt et ses modules sont compilés. L'objectif était de pérenniser Qt en adoptant un outil de compilation largement répandu et très populaire : CMake.

Compilation de Qt à partir des sources

Le système de compilation de Qt 5 reposait sur qmake. Dans Qt 6, nous avons porté le système de compilation vers CMake.

Remarque : cela ne concerne que les utilisateurs qui souhaitent compiler Qt à partir des sources. Vous pouvez toujours utiliser qmake comme outil de compilation pour vos applications.

Il est possible de configurer Qt directement depuis la ligne de commande en exécutant cmake. Cependant, nous continuons à recommander l’outil de ligne de commande configure, qui offre une interface sans doute plus conviviale et des vérifications d’erreurs supplémentaires.

Voir également Options de configuration de Qt pour un aperçu de la nouvelle API de configuration.

CMake et Ninja en tant que dépendances externes

Vous avez besoin d’une version récente de CMake pour configurer et compiler Qt. Pour Qt 6.0, CMake 3.16 est requis. À partir de Qt 6.2, CMake 3.21 est requis lors de la compilation de Qt en bibliothèques statiques. À partir de Qt 6.6, CMake 3.21.1 est requis pour la compilation de Qt sur les plateformes Apple. À partir de Qt 6.9, CMake 3.22 est requis. À partir de Qt 6.12, CMake 3.25 est requis. Vous devez également disposer d’une version à jour de l’outil Ninja.

CMake et Ninja sont tous deux des outils open source qui peuvent être installés de différentes manières. Ils sont également disponibles sur Qt Online Installer.

Consultez la section « Compilation des sources Qt » pour obtenir un aperçu plus détaillé des prérequis de compilation sur différentes plateformes.

Sélection d’une licence Qt

Dans Qt 5, l’outil `configure` vous demandait de préciser si vous comptiez utiliser Qt sous licence commerciale ou open source. Si vous disposiez de plusieurs licences commerciales, vous deviez également sélectionner celle que vous souhaitiez utiliser.

Nous avons supprimé ces deux choix dans Qt 6. Le choix des licences qui s’offrent à vous dépend des contrats juridiques que vous avez conclus avec The Qt Company, et non de quels que fichiers que ce soit.

Les options de `configure` `-opensource`, `-commercial` et `-confirm-license ` sont ignorées dans Qt 6 et pourraient être supprimées dans les futures versions de Qt.

Relancer la commande « configure »

Il arrive parfois que vous souhaitiez relancer la commande `configure` pour tester différentes options de configuration. Dans Qt 5, la commande `configure` mettait en cache diverses informations provenant de l’environnement entre deux exécutions, mais par ailleurs, elle démarrait à partir d’un état vierge : vous deviez utiliser l’option `-redo`, ou le script shell `config.status`, pour réutiliser les arguments d’une exécution précédente. Vous pouviez également utiliser les options -recheck et -recheck-all pour forcer une réévaluation des tests mis en cache.

CMake, et par conséquent la commande `configure` dans Qt 6, met en cache les résultats de manière encore plus intensive. Les paramètres d’environnement détectés, mais aussi les sélections effectuées via d’autres arguments de ligne de commande, sont stockés dans un fichier nommé CMakeCache.txt. Si vous exécutez `configure` avec de nouvelles options, celles-ci sont fusionnées dans ce fichier. Supprimez le fichier pour repartir de zéro. Les options de `configure` mentionnées ci-dessus ne sont plus prises en charge.

Compilation de certaines parties seulement de Qt

Le système de compilation de Qt 5 vous permettait d’exécuter l’outil de compilation (par exemple make) dans un sous-répertoire pour effectuer une recompilation partielle.

CMake suit un paradigme différent et vous oblige à compiler les cibles à partir du répertoire de niveau supérieur, en tenant compte de l’ensemble de la compilation. Utilisez la commande ` ninja -t targets ` pour afficher toutes les cibles disponibles dans la compilation.

Détection des bibliothèques tierces

L'une des tâches de `configure` consiste à détecter la présence de différents paquets tiers dans l'environnement. Dans Qt 5, `configure` utilisait éventuellement `pkg-config` à cette fin, mais recourait également à divers tests à la compilation. Ces vérifications pouvaient être ajustées depuis la ligne de commande à l'aide de différentes variables d'environnement telles que `ICU_PREFIX`, `ICU_LIBS`, etc.

Dans Qt 6, `configure` s’appuie sur CMake pour résoudre les dépendances. Pour la plupart des dépendances, cela nécessite que la bibliothèque tierce fournisse un paquet CMake dans le chemin de recherche CMake. Vous pouvez utiliser la variable ` CMAKE_PREFIX_PATH ` pour étendre ce chemin avec des emplacements personnalisés.

Certaines dépendances, comme OpenSSL, sont également détectées par la logique intégrée à CMake : si OpenSSL n’est pas détecté, vous devrez peut-être définir la variable CMake ` OPENSSL_ROOT_DIR ` afin qu’elle pointe vers le répertoire d’installation.

Sélection de la chaîne d'outils

Dans Qt 5, la commande `configure` utilisait ce qu’on appelle des « mkspecs » pour spécifier à la fois la plate-forme de compilation et les plates-formes cibles (options`-platform`, `-xplatform` et `-device` ). CMake n’utilise pas ces mkspecs, mais s’appuie plutôt sur des vérifications d’environnement et des fichiers de chaîne d’outils (voir également la documentation sur les chaînes d’outils CMake). Les options -platform et -xplatform sont toujours disponibles, mais ne servent qu’à définir les valeurs par défaut pour l’outil qmake généré.

Compilation croisée de Qt

La compilation croisée consiste à compiler du code destiné à un système informatique (la cible) sur un autre système (l’hôte). Un environnement de compilation permettant la compilation croisée d’applications Qt nécessite que les outils Qt soient disponibles sur l’hôte (comme moc ou rcc), ainsi que les bibliothèques Qt à compiler pour la cible.

Dans Qt 5, la commande `configure` permettait de compiler les outils de l’hôte ainsi que les outils et bibliothèques de la cible en une seule étape. Dans Qt 6, cette fonctionnalité n’est plus prise en charge. À la place, vous devez avoir installé et lancé Qt sur l’hôte avant de pouvoir effectuer la compilation croisée de Qt vers la cible. De plus, la version de Qt installée doit être identique à celle destinée à la compilation croisée.

Pour plus de détails sur la compilation croisée, consultez les pages « Configurer un périphérique Linux embarqué », « Qt pour Android – Compilation à partir du code source » et « Qt pour iOS – Compilation à partir du code source ».

Portage des plugins Qt et des bibliothèques supplémentaires

Bien que qmake soit toujours pris en charge pour la compilation d’applications Qt, il ne peut plus être utilisé pour compiler des plugins Qt personnalisés, ni des bibliothèques qui s’appuient sur des composants internes du système de compilation de Qt 5. Ces bibliothèques ou plugins doivent être portés vers CMake pour pouvoir être utilisés avec Qt 6.

À la date de sortie de Qt 6.0, l’API permettant de compiler des plugins ou des bibliothèques Qt personnalisés est encore en phase de préversion technique, ce qui signifie qu’elle est susceptible d’évoluer dans les versions futures. Une API stable et publique sera disponible dans une version ultérieure de Qt 6.

© 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.