Vrystelling van die Meson 1.3-samestellingstelsel

Die vrystelling van die Meson 1.3.0-boustelsel is gepubliseer, wat gebruik word om projekte soos X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME en GTK te bou. Die Meson-kode is in Python geskryf en is onder die Apache 2.0-lisensie gelisensieer.

Die sleutelontwikkelingsdoelwit van Meson is om 'n hoëspoedsamestellingsproses te bied, gekombineer met gerief en gemak van gebruik. In plaas van maak, gebruik die bou by verstek die Ninja-gereedskapstel, maar ander backends soos xcode en VisualStudio kan ook gebruik word. Die stelsel het 'n ingeboude multi-platform afhanklikheid hanteerder wat jou toelaat om Meson te gebruik om pakkette vir verspreidings te bou. Samestellingreëls word in 'n vereenvoudigde domeinspesifieke taal opgestel, dit is goed leesbaar en verstaanbaar vir die gebruiker (volgens die outeurs se idee moet die ontwikkelaar 'n minimum tyd spandeer om reëls te skryf).

Kruissamestelling en bou op Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS en Windows met behulp van GCC, Clang, Visual Studio en ander samestellers word ondersteun. Dit is moontlik om projekte in verskeie programmeertale te bou, insluitend C, C++, Fortran, Java en Rust. 'n Inkrementele boumodus word ondersteun, waarin slegs komponente wat direk verband hou met veranderinge wat aangebring is sedert die laaste bou, herbou word. Meson kan gebruik word om herhaalbare bouwerk te genereer, waar die uitvoering van die bou in verskillende omgewings heeltemal identiese uitvoerbares tot gevolg het.

Belangrikste innovasies van Meson 1.3:

  • Het die opsie "werror: true" by die samestellerkontrolemetodes gevoeg compiler.compiles(), compiler.links() en compiler.run(), wat samestellerwaarskuwings as foute hanteer (kan gebruik word om te kontroleer dat die kode sonder waarskuwings gebou is ).
  • Bygevoeg has_define-metode om simbooldefinisie deur voorverwerker na te gaan.
  • Die parameter macro_name is by die configure_file()-funksie gevoeg, wat makrobeskerming vir dubbele verbindings byvoeg deur "#include" ("sluit wagte in"), ontwerp in die styl van makro's in die C-taal (vereenvoudig die skep van konfigurasielêers met dinamiese makro name).
  • 'n Nuwe uitvoerformaat is bygevoeg by configure_file() - JSON ("output_format: json").
  • Het die vermoë bygevoeg om waardelyste by die c_std- en cpp_std-parameters te gebruik (byvoorbeeld "default_options: 'c_std=gnu11,c11′').
  • In modules wat CustomTarget gebruik om lêers te verwerk, is die vermoë om boodskappe wat deur die ninja-hulpmiddel uitgevoer word aan te pas, bygevoeg.
  • Die build_target "jar" is opgeskort en die "jar()"-oproep word eerder aanbeveel.
  • Die 'env'-parameter is by die generator.process()-metode gevoeg om die omgewingsveranderlike te stel waardeur die generator insette sal verwerk.
  • Wanneer bouteikenname gespesifiseer word wat met uitvoerbares geassosieer word, word agtervoegsels soos "executable('foo', 'main.c', name_suffix: 'bar')" toegelaat om bykomende uitvoerbares in dieselfde gids te genereer.
  • Het die "vs_module_defs"-parameter by die uitvoerbare()-funksie gevoeg om 'n def-lêer te gebruik wat die lys funksies definieer wat na shared_module() gestuur word.
  • Bygevoeg 'default_options' parameter by find_program() funksie om verstek opsies vir terugval subprojek te stel.
  • Bygevoeg fs.relative_to() metode, wat die relatiewe pad vir die eerste argument terugstuur, relatief tot die tweede, as die eerste pad bestaan. Byvoorbeeld, "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • Die volgende_symlinks-parameter is by die install_data(), install_headers()- en install_subdir()-funksies gevoeg; wanneer dit gestel is, word simboliese skakels gevolg.
  • 'n "fill"-parameter is by die int.to_string()-metode gevoeg om die string inkrementeel te vul met voorste nulle. Byvoorbeeld, die oproep van message(n.to_string(fill: 3)) vir n=4 sal die string "004" produseer.
  • Het 'n nuwe teiken bygevoeg, clang-tidy-fix, wat spesifiseer om die clang-tidy-hulpprogram met die "-fix"-vlag te laat loop.
  • Die vermoë om die agtervoegsel (TARGET_SUFFIX) van die samestellingteiken ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) te spesifiseer, is by die saamstelopdrag gevoeg.
  • Omgewingsveranderlike MESON_PACKAGE_CACHE_DIR bygevoeg om die pad na die pakketkas (subprojekte/pakketkas) te ignoreer, byvoorbeeld, sodat jy 'n gedeelde kas in verskeie projekte kan gebruik.
  • Bygevoeg "meson setup --clearcache" opdrag om aanhoudende kas skoon te maak.
  • Ondersteuning vir die "vereiste" sleutelwoord is bygevoeg by alle "has_*" samesteller kontrolemetodes, byvoorbeeld, in plaas van "assert(cc.has_function('some_function'))" kan jy nou "cc.has_function('some_function' spesifiseer , vereis: waar)”.
  • 'n Nuwe sleutelwoord, rust_abi, is bygevoeg by die shared_library(), static_library(), library() en shared_module() funksies, wat gebruik moet word in plaas van die verouderde rust_crate_type.

Bron: opennet.ru

Voeg 'n opmerking