Meson build system release 0.52

publicat versió del sistema de compilació Mesó 0.52, que s'utilitza per crear projectes com ara X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME i GTK+. El codi Meson està escrit en Python i subministrat amb llicència d'Apache 2.0.

L'objectiu clau del desenvolupament de Meson és proporcionar una alta velocitat del procés de muntatge combinat amb comoditat i facilitat d'ús. En lloc de la utilitat make, la compilació predeterminada utilitza el conjunt d'eines ninja, però també és possible utilitzar altres backends, com ara xcode i VisualStudio. El sistema té un gestor de dependències multiplataforma integrat que us permet utilitzar Meson per crear paquets per a distribucions. Les regles de muntatge s'especifiquen en un llenguatge simplificat específic del domini, són molt llegibles i comprensibles per a l'usuari (tal com pretenen els autors, el desenvolupador hauria de dedicar un mínim de temps a escriure regles).

Compatible Compileu i construïu a Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS i Windows mitjançant GCC, Clang, Visual Studio i altres compiladors. És possible construir projectes en diversos llenguatges de programació, inclosos C, C++, Fortran, Java i Rust. S'admet el mode de compilació incremental, en el qual només es reconstrueixen els components directament relacionats amb els canvis fets des de l'última compilació. Meson es pot utilitzar per generar compilacions repetibles, en què l'execució de la compilació en diferents entorns dóna lloc a la generació de fitxers executables completament idèntics.

El principal innovacions Mesó 0.52:

  • S'ha afegit suport experimental per a Webassembly utilitzant Emscripten com a compilador;
  • El suport per a les plataformes Illumos i Solaris s'ha millorat significativament i s'ha posat en condicions de funcionament;
  • Assegura que els scripts d'internacionalització basats en gettext s'ignoren si el sistema no té instal·lat el conjunt d'eines gettext (anteriorment es mostrava un error en utilitzar el mòdul i18n en sistemes sense gettext);
  • Suport millorat per a biblioteques estàtiques. S'han resolt molts problemes en utilitzar biblioteques estàtiques desinstal·lades;
  • S'ha afegit la possibilitat d'utilitzar diccionaris per assignar variables d'entorn. Quan es crida a ambient(), el primer element ara es pot especificar com un diccionari en el qual les variables d'entorn es defineixen en forma de clau/valor. Aquestes variables es transferiran a entorn_objecte com si s'haguessin establert individualment mitjançant el mètode set(). Els diccionaris també es poden passar ara a diverses funcions que admeten un argument "env";
  • S'ha afegit la funció "runtarget alias_target(target_name, dep1, ...)" que crea un nou objectiu de compilació de primer nivell que es pot cridar amb el backend de compilació seleccionat (per exemple, "ninja target_name"). Aquest objectiu de compilació no executa cap ordre, però assegura que es creen totes les dependències;
  • S'ha activat la configuració automàtica de la variable d'entorn PKG_CONFIG_SYSROOT_DIR durant la compilació creuada si hi ha una configuració sys_root a la secció "[propietats]";
  • S'ha afegit l'opció "--gdb-path" per determinar el camí al depurador GDB quan s'especifica l'opció "--gdb testname" per executar GDB amb l'script de prova especificat;
  • S'ha afegit la detecció automàtica de l'objectiu de compilació clang-tidy per executar aquest linter amb tots els fitxers font. L'objectiu es crea si clang-tidy està disponible al sistema i el fitxer ".clang-tidy" (o "_clang-tidy") està definit a l'arrel del projecte;
  • S'ha afegit dependència ('blocs') per utilitzar-lo a l'extensió Clang Blocs;
  • Les vistes de l'enllaçador i del compilador estan separades, la qual cosa permet utilitzar diferents combinacions de compiladors i enllaçadors;
  • S'ha afegit el mètode all_dependencies() als objectes SourceSet a més del mètode all_sources();
  • A run_project_tests.py, s'ha afegit l'opció “--only” per executar proves selectivament (per exemple, “python run_project_tests.py —només fortran python3”);
  • La funció find_program() ara té la capacitat de cercar només les versions requerides d'un programa (la versió es determina executant el programa amb l'opció "-version");
  • Per controlar l'exportació de símbols, s'ha afegit l'opció vs_module_defs a la funció shared_module(), similar a shared_library();
  • El mòdul kconfig s'ha ampliat per donar suport a configure_file() per especificar un fitxer d'entrada;
  • S'ha afegit la possibilitat d'especificar diversos fitxers d'entrada per als controladors "command:" a configure_file();
  • L'ordre "dist" per crear un arxiu s'ha mogut a la categoria d'ordres de primer nivell (anteriorment l'ordre estava lligada a ninja). S'ha afegit l'opció "--formats" per definir els tipus d'arxius a crear (per exemple,
    "meson dist -formats=xztar,zip").

Font: opennet.ru

Afegeix comentari