La version de l'outil de construction Qbs 1.21 est présentée. C'est la huitième version après le départ de Qt Company du développement du projet, préparée par la communauté désireuse de poursuivre le développement de Qbs. Pour compiler Qbs, il faut des dépendances Qt, bien que Qbs soit conçu pour organiser la construction de n'importe quel projet. Qbs utilise une version simplifiée du langage QML pour définir les scripts de construction du projet, ce qui permet de définir des règles de construction suffisamment flexibles, dans lesquelles des modules externes peuvent être connectés, des fonctions JavaScript peuvent être utilisées et des règles de construction arbitraires peuvent être créées.
Le langage de script utilisé dans Qbs est adapté pour automatiser la génération et l'analyse des scripts de construction dans les environnements de développement intégrés. De plus, Qbs ne génère pas de fichiers make, mais contrôle lui-même, sans intermédiaires comme l'outil make, le lancement des compilateurs et des linkers, optimisant ainsi le processus de construction sur la base d'un graphe détaillé de toutes les dépendances. La disponibilité de données initiales sur la structure et les dépendances dans le projet permet d'exécuter efficacement les opérations en plusieurs threads. Pour les grands projets composés d'un grand nombre de fichiers et de sous-répertoires, les performances de reconstruction avec Qbs peuvent surpasser celles de make de plusieurs fois — la reconstruction s'effectue presque instantanément et ne fait pas perdre de temps à l'équipe de développeurs.
Rappelons qu'en 2018, la société Qt Company a décidé de cesser le développement de Qbs. Qbs a été développé comme un substitut à qmake, mais il a finalement été décidé d'utiliser CMake comme système de construction principal pour Qt à long terme. Le développement de Qbs se poursuit maintenant sous la forme d'un projet indépendant, soutenu par la communauté et des développeurs intéressés. L'infrastructure de Qt Company continue d'être utilisée pour le développement pour l'instant.
Principales nouveautés de Qbs 1.21 :
- Le mécanisme des fournisseurs de modules (générateurs de modules) a été refondu. Pour des frameworks tels que Qt et Boost, il est désormais possible d'utiliser plus d'un fournisseur, de définir lequel des fournisseurs utiliser à l'aide de la nouvelle propriété qbsModuleProviders et d'indiquer une priorité pour le choix des modules générés par différents fournisseurs. Par exemple, deux fournisseurs « Qt » et « qbspkgconfig » peuvent être indiqués, le premier essayant d'utiliser l'installation personnalisée de Qt (via la recherche de qmake), et si une telle installation n'est pas trouvée, le deuxième fournisseur essaiera d'utiliser Qt fourni par le système (via l'appel de pkg-config) : CppApplication { Depends { name: «Qt.core» } files: «main.cpp» qbsModuleProviders: [«Qt», «qbspkgconfig»] }
- Ajout d'un fournisseur « qbspkgconfig », qui remplace le fournisseur de modules « fallback », tentant de générer un module à l'aide de pkg-config si le module requis n'a pas été généré par d'autres fournisseurs. Contrairement au « fallback », dans « qbspkgconfig », au lieu d'appeler l'outil pkg-config, une bibliothèque C++ intégrée est utilisée pour lire directement les fichiers « .pc », ce qui permet d'accélérer le processus et d'obtenir des informations supplémentaires sur les dépendances des paquets, non disponibles lors de l'appel de l'outil pkg-config.
- Ajout du support de la spécification C++23, définissant le futur standard C++.
- Ajout du support de l'architecture Elbrus E2K pour l'outil GCC.
- Pour la plateforme Android, une propriété Android.ndk.buildId a été ajoutée, permettant de remplacer la valeur par défaut pour le drapeau du linker « —build-id ».
- Dans les modules capnproto et protobuf, il est possible d'utiliser des runtimes fournis par le fournisseur qbspkgconfig.
- Les problèmes de suivi des modifications dans les fichiers de code source sur la plateforme FreeBSD, survenant à cause de l'ignorance des millisecondes lors de l'évaluation du temps de modification du fichier, ont été résolus.
- Ajout de la propriété ConanfileProbe.verbose, facilitant le débogage des projets utilisant le gestionnaire de paquets Conan.
On peut également noter le début des tests alpha du framework Qt 6.3, qui intègre un nouveau module « Qt Language Server » avec support des protocoles Language Server et JsonRpc 2.0. Le module Qt Core a reçu un grand nombre de nouvelles fonctionnalités, le module Qt Quick Dialogs a introduit le type QML MessageDialog permettant d'utiliser les fenêtres de dialogue fournies par la plateforme, et le module Qt Wayland Compositor a ajouté le compositeur. serveur Qt Shell et API pour la création de ses propres extensions de shell utilisateur.
Le module Qt QML propose une implémentation du compilateur qmltc (compilateur de type QML), permettant de compiler des structures d'objets QML en classes en langage C++. Pour les utilisateurs commerciaux, les tests du produit Qt Quick Compiler ont commencé avec Qt 6.3, qui, en plus de ce qui a été mentionné, inclut le compilateur de scripts QML permettant de compiler des fonctions et des expressions QML en code C++. L'utilisation de Qt Quick Compiler devrait rapprocher les performances des applications basées sur QML de celles des applications natives, en notant en particulier une réduction du temps de démarrage et d'exécution d'environ 30 % par rapport à l'utilisation de la version interprétée.
Source : opennet.ru
