Meson build system release 1.3

S'ha publicat el llançament del sistema de compilació Meson 1.3.0, 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 té la llicència d'Apache 2.0.

L'objectiu clau de desenvolupament de Meson és proporcionar un procés de muntatge d'alta velocitat combinat amb comoditat i facilitat d'ús. En lloc de fer, la compilació utilitza el conjunt d'eines Ninja de manera predeterminada, però també es poden utilitzar altres backends com 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'estableixen en un llenguatge simplificat específic del domini, són ben llegibles i comprensibles per a l'usuari (segons la idea dels autors, el desenvolupador hauria de dedicar un mínim de temps a escriure regles).

S'admet la compilació creuada i la creació 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 un mode de construcció incremental, en el qual només es reconstrueixen els components que estan directament relacionats amb els canvis fets des de l'última compilació. Meson es pot utilitzar per generar compilacions repetibles, on executar la compilació en diferents entorns dóna com a resultat executables completament idèntics.

Principals innovacions de Meson 1.3:

  • S'ha afegit l'opció "werror: true" als mètodes de verificació del compilador compiler.compiles(), compiler.links() i compiler.run(), que tracta les advertències del compilador com a errors (es pot utilitzar per comprovar que el codi s'ha creat sense advertències). ).
  • S'ha afegit el mètode has_define per comprovar la definició del símbol mitjançant el preprocessador.
  • El paràmetre macro_name s'ha afegit a la funció configure_file(), afegint protecció de macro per a connexions dobles mitjançant “#include” (“inclou guardes”), dissenyat a l'estil de macros en llenguatge C (simplificant la creació de fitxers de configuració amb dinàmics). noms de macro).
  • S'ha afegit un nou format de sortida a configure_file() - JSON ("output_format: json").
  • S'ha afegit la possibilitat d'utilitzar llistes de valors als paràmetres c_std i cpp_std (per exemple, "default_options: 'c_std=gnu11,c11′').
  • En els mòduls que utilitzen CustomTarget per processar fitxers, s'ha afegit la possibilitat de personalitzar els missatges que emet la utilitat ninja.
  • El build_target "jar" ha quedat obsolet i es recomana la crida "jar()".
  • El paràmetre 'env' s'ha afegit al mètode generator.process() per establir la variable d'entorn a través de la qual el generador processarà l'entrada.
  • Quan s'especifiquen noms de destinació de compilació associats amb executables, els sufixos com ara "executable('foo', 'main.c', name_suffix: 'bar')" poden generar executables addicionals al mateix directori.
  • S'ha afegit el paràmetre "vs_module_defs" a la funció executuable() per utilitzar un fitxer def que defineix la llista de funcions passades a shared_module().
  • S'ha afegit el paràmetre 'default_options' a la funció find_program() per establir les opcions predeterminades per al subprojecte de reserva.
  • S'ha afegit el mètode fs.relative_to(), que retorna el camí relatiu del primer argument, en relació amb el segon, si existeix el primer camí. Per exemple, "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • S'ha afegit el paràmetre following_symlinks a les funcions install_data(), install_headers() i install_subdir(); quan s'estableix, se segueixen els enllaços simbòlics.
  • S'ha afegit un paràmetre "fill" al mètode int.to_string() per omplir de manera incremental la cadena amb zeros inicials. Per exemple, cridar a message(n.to_string(fill: 3)) per a n=4 produirà la cadena "004".
  • S'ha afegit un objectiu nou, clang-tidy-fix, que especifica l'execució de la utilitat clang-tidy amb el senyalador "-fix".
  • S'ha afegit la capacitat d'especificar el sufix (TARGET_SUFFIX) de l'objectiu del muntatge ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) a l'ordre de compilació.
  • S'ha afegit la variable d'entorn MESON_PACKAGE_CACHE_DIR per anul·lar el camí a la memòria cau del paquet (subprojectes/caché de paquets), per exemple, que us permet utilitzar una memòria cau compartida en diversos projectes.
  • S'ha afegit l'ordre "meson setup --clearcache" per esborrar la memòria cau persistent.
  • S'ha afegit suport per a la paraula clau "obligatòria" a tots els mètodes de verificació del compilador "has_*", per exemple, en lloc de "assert(cc.has_function('some_function'))" ara podeu especificar "cc.has_function('some_function' , requerit: cert)".
  • S'ha afegit una paraula clau nova, rust_abi, a les funcions shared_library(), static_library(), library() i shared_module(), que s'hauria d'utilitzar en lloc de l'obsolet rust_crate_type.

Font: opennet.ru

Afegeix comentari