Version 0.52 du système de construction Meson

Publié construire la version du système tableau 0.52, qui est utilisé pour créer des projets tels que X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME et GTK+. Le code Meson est écrit en Python et fourni sous licence Apache 2.0.

L'objectif principal du développement de Meson est de fournir une vitesse élevée du processus d'assemblage combinée à une commodité et une facilité d'utilisation. Au lieu de l'utilitaire make, la version par défaut utilise la boîte à outils Ninja, mais il est également possible d'utiliser d'autres backends, tels que xcode et VisualStudio. Le système dispose d'un gestionnaire de dépendances multiplateforme intégré qui vous permet d'utiliser Meson pour créer des packages pour les distributions. Les règles d'assemblage sont spécifiées dans un langage simplifié spécifique au domaine, sont hautement lisibles et compréhensibles pour l'utilisateur (comme prévu par les auteurs, le développeur doit consacrer un minimum de temps à écrire des règles).

Soutenu par compilez de manière croisée et construisez sur Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS et Windows à l'aide de GCC, Clang, Visual Studio et d'autres compilateurs. Il est possible de créer des projets dans différents langages de programmation, notamment C, C++, Fortran, Java et Rust. Le mode de construction incrémentielle est pris en charge, dans lequel seuls les composants directement liés aux modifications apportées depuis la dernière version sont reconstruits. Meson peut être utilisé pour générer des builds répétables, dans lesquels l'exécution de la build dans différents environnements entraîne la génération de fichiers exécutables complètement identiques.

principal les innovations Méson 0.52 :

  • Ajout d'un support expérimental pour Webassembly utilisant Emscripten comme compilateur ;
  • La prise en charge des plates-formes Illumos et Solaris a été considérablement améliorée et mise en état de fonctionnement ;
  • Garantit que les scripts d'internationalisation basés sur gettext sont ignorés si le système n'a pas installé la boîte à outils gettext (auparavant, une erreur s'affichait lors de l'utilisation du module i18n sur des systèmes sans gettext) ;
  • Prise en charge améliorée des bibliothèques statiques. De nombreux problèmes liés à l'utilisation de bibliothèques statiques désinstallées ont été résolus ;
  • Ajout de la possibilité d'utiliser des dictionnaires pour attribuer des variables d'environnement. Lors de l'appel d'environment(), le premier élément peut désormais être spécifié comme un dictionnaire dans lequel les variables d'environnement sont définies sous forme clé/valeur. Ces variables seront transférées vers environnement_object comme si elles étaient définies individuellement via la méthode set(). Les dictionnaires peuvent également désormais être transmis à diverses fonctions prenant en charge un argument « env » ;
  • Ajout de la fonction "runtarget alias_target(target_name, dep1, ...)" qui crée une nouvelle cible de build de premier niveau qui peut être appelée avec le backend de build sélectionné (par exemple "ninja target_name"). Cette cible de build n'exécute aucune commande, mais garantit que toutes les dépendances sont construites ;
  • Activation du réglage automatique de la variable d'environnement PKG_CONFIG_SYSROOT_DIR lors de la compilation croisée s'il existe un paramètre sys_root dans la section « [propriétés] » ;
  • Ajout de l'option "--gdb-path" pour déterminer le chemin d'accès au débogueur GDB lors de la spécification de l'option "--gdb testname" pour exécuter GDB avec le script de test spécifié ;
  • Ajout de la détection automatique de la cible de build clang-tidy pour exécuter ce linter avec tous les fichiers sources. La cible est créée si clang-tidy est disponible dans le système et que le fichier « .clang-tidy » (ou « _clang-tidy ») est défini à la racine du projet ;
  • Ajout d'une dépendance (« blocs ») à utiliser dans l'extension Clang Blocs;
  • Les vues de l'éditeur de liens et du compilateur sont séparées, ce qui permet d'utiliser différentes combinaisons de compilateurs et d'éditeurs de liens ;
  • Ajout de la méthode all_dependencies() aux objets SourceSet en plus de la méthode all_sources() ;
  • Dans run_project_tests.py, l'option « --only » a été ajoutée pour exécuter des tests de manière sélective (par exemple, « python run_project_tests.py —only fortran python3 ») ;
  • La fonction find_program() a désormais la capacité de rechercher uniquement les versions requises d'un programme (la version est déterminée en exécutant le programme avec l'option « -version ») ;
  • Pour contrôler l'exportation des symboles, l'option vs_module_defs a été ajoutée à la fonction shared_module(), similaire à shared_library();
  • Le module kconfig a été étendu pour prendre en charge configure_file() pour spécifier un fichier d'entrée ;
  • Ajout de la possibilité de spécifier plusieurs fichiers d'entrée pour les gestionnaires « command : » dans configure_file();
  • La commande « dist » pour créer une archive a été déplacée dans la catégorie des commandes de premier niveau (auparavant la commande était liée à ninja). Ajout de l'option "--formats" pour définir les types d'archives à créer (par exemple,
    "meson dist -formats=xztar,zip").

Source: opennet.ru

Ajouter un commentaire