Meson-konstrua sistemo eldono 1.3

La eldono de la konstrusistemo Meson 1.3.0 estis publikigita, kiu estas uzata por konstrui projektojn kiel X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME kaj GTK. La Meson-kodo estas skribita en Python kaj estas licencita laŭ la permesilo Apache 2.0.

La ŝlosila disvolva celo de Meson estas provizi altrapidan kunigprocezon kombinitan kun oportuno kaj facileco de uzo. Anstataŭ fari, la konstruo uzas la Ninja ilaron defaŭlte, sed aliaj backends kiel xcode kaj VisualStudio ankaŭ povas esti uzataj. La sistemo havas enkonstruitan plurplatforman dependectraktilon, kiu permesas vin uzi Meson por konstrui pakaĵojn por distribuoj. Asembleaj reguloj estas fiksitaj en simpligita domajna specifa lingvo, ili estas bone legeblaj kaj kompreneblaj por la uzanto (laŭ la ideo de la aŭtoroj, la programisto devus pasigi minimume da tempo skribante regulojn).

Transkompilado kaj konstruado sur Linukso, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS kaj Vindozo uzante GCC, Clang, Visual Studio kaj aliajn kompililojn estas subtenataj. Eblas konstrui projektojn en diversaj programlingvoj, inkluzive de C, C++, Fortran, Java kaj Rust. Pliiga konstrureĝimo estas subtenata, en kiu nur komponentoj kiuj estas rekte rilataj al ŝanĝoj faritaj ekde la lasta konstruo estas rekonstruitaj. Meson povas esti uzata por generi ripeteblajn konstruojn, kie funkcii la konstruon en malsamaj medioj rezultigas tute identajn ruleblajn konstruaĵojn.

Ĉefaj inventoj de Meson 1.3:

  • Aldonis la opcion "werror: true" al la kompililkontrolmetodoj compiler.compiles(), compiler.links() kaj compiler.run(), kiu traktas kompililajn avertojn kiel erarojn (povas esti uzata por kontroli, ke la kodo estas konstruita sen avertoj). ).
  • Aldonita has_define metodo por kontroli simbolodifinon per antaŭprocesoro.
  • La parametro makro_name estis aldonita al la funkcio configure_file(), aldonante makroprotekton por duoblaj konektoj per "#include" ("inkluzivi gardistojn"), desegnita en la stilo de makrooj en la C-lingvo (simpligante la kreadon de agordaj dosieroj kun dinamika. makronomoj).
  • Nova eligformato estis aldonita al configure_file() - JSON ("output_format: json").
  • Aldonis la eblon uzi listojn de valoroj al la parametroj c_std kaj cpp_std (ekzemple, "default_options: 'c_std=gnu11,c11′').
  • En moduloj kiuj uzas CustomTarget por prilabori dosierojn, la kapablo personecigi mesaĝojn eligitajn de la Ŝinobo-utilo estis aldonita.
  • La build_target "jar" estas malrekomendita kaj la alvoko "jar()" rekomendas anstataŭe.
  • La parametro 'env' estis aldonita al la metodo generator.process() por agordi la mediovariablon per kiu la generatoro prilaboros enigaĵon.
  • Kiam oni specifas konstruajn celnomojn asociitajn kun ruleblaj sufiksoj kiel "executable('foo', 'main.c', name_suffix: 'bar')" rajtas generi pliajn ruleblajn dosierojn en la sama dosierujo.
  • Aldonis la parametron "vs_module_defs" al la funkcio exectuable() por uzi def-dosieron, kiu difinas la liston de funkcioj transdonitaj al shared_module().
  • Aldonita 'default_options' parametro al find_program() funkcio por agordi defaŭltajn opciojn por rezerva subprojekto.
  • Aldonita fs.relative_to() metodo, kiu resendas la relativan vojon por la unua argumento, relative al la dua, se la unua vojo ekzistas. Ekzemple, "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • La sekva_symlinks parametro estis aldonita al la funkcioj instal_data(), install_headers() kaj install_subdir(); kiam agordita, simbolaj ligiloj estas sekvataj.
  • Parametro "fill" estis aldonita al la metodo int.to_string() por pliige plenigi la ĉenon per antaŭaj nuloj. Ekzemple, voki message(n.to_string(fill: 3)) por n=4 produktos la ĉenon "004".
  • Aldonita nova celo, clang-tidy-fix, kiu specifas ruli la clang-tidy ilo kun la "-fix" flago.
  • La kapablo specifi la sufikson (TARGET_SUFFIX) de la kunigcelo ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) estis aldonita al la kompila komando.
  • Aldonita mediovariablo MESON_PACKAGE_CACHE_DIR por superregi la vojon al la paka kaŝmemoro (subprojektoj/packagecache), ekzemple, permesante al vi uzi komunan kaŝmemoron en pluraj projektoj.
  • Aldonita "meson setup --clearcache" komando por forigi konstantan kaŝmemoron.
  • Subteno por la "bezonata" ŝlosilvorto estis aldonita al ĉiuj "has_*" kompililkontrolmetodoj, ekzemple, anstataŭ "assert(cc.has_function('some_function'))" vi nun povas specifi "cc.has_function('some_function'). , bezonata: vera)”.
  • Nova ŝlosilvorto, rust_abi, estis aldonita al la funkcioj shared_library(), static_library(), library(), kaj shared_module(), kiuj devus esti uzataj anstataŭ la malrekomendita rust_crate_type.

fonto: opennet.ru

Aldoni komenton