„Meson build“ sistemos leidimas 1.3

Paskelbtas Meson 1.3.0 kūrimo sistemos leidimas, kuris naudojamas kuriant tokius projektus kaip X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME ir GTK. Meson kodas parašytas Python ir yra licencijuotas pagal Apache 2.0 licenciją.

Pagrindinis Meson plėtros tikslas yra užtikrinti greitą surinkimo procesą kartu su patogumu ir paprastu naudojimu. Vietoj make, pagal numatytuosius nustatymus kūrimas naudoja „Ninja“ įrankių rinkinį, tačiau taip pat galima naudoti kitas pagrindines programas, tokias kaip „xcode“ ir „VisualStudio“. Sistema turi integruotą kelių platformų priklausomybės tvarkyklę, leidžiančią naudoti „Meson“ paskirstymo paketams kurti. Surinkimo taisyklės nustatytos supaprastinta konkrečiai domeno kalba, jos yra gerai skaitomos ir suprantamos vartotojui (pagal autorių sumanymą, taisyklių rašymui kūrėjas turėtų skirti minimalų laiką).

Palaikomas kryžminis kompiliavimas ir kūrimas Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS ir Windows naudojant GCC, Clang, Visual Studio ir kitus kompiliatorius. Galima kurti projektus įvairiomis programavimo kalbomis, įskaitant C, C++, Fortran, Java ir Rust. Palaikomas laipsniškas kūrimo režimas, kuriame atkuriami tik tie komponentai, kurie yra tiesiogiai susiję su pakeitimais, atliktais po paskutinės versijos. Meson gali būti naudojamas kartojamoms versijoms generuoti, kai paleidus kūrimą skirtingose ​​aplinkose gaunami visiškai identiški vykdomieji failai.

Pagrindinės Meson 1.3 naujovės:

  • Prie kompiliatoriaus tikrinimo metodų compiler.compiles(), compiler.links() ir compiler.run() pridėta parinktis „werror: true“, kuri kompiliatoriaus įspėjimus traktuoja kaip klaidas (galima naudoti norint patikrinti, ar kodas sukurtas be įspėjimų ).
  • Pridėtas has_define metodas, skirtas patikrinti simbolio apibrėžimą pagal išankstinį procesorių.
  • Parametras macro_name buvo pridėtas prie funkcijos configure_file(), pridedant makrokomandų apsaugą dvigubiems ryšiams per „#include“ („įtraukti apsaugas“), sukurtas makrokomandų stiliumi C kalba (supaprastinant konfigūravimo failų su dinamine kūrimą makrokomandų pavadinimai).
  • Prie configure_file() pridėtas naujas išvesties formatas – JSON ("output_format: json").
  • Prie c_std ir cpp_std parametrų pridėta galimybė naudoti reikšmių sąrašus (pvz., „default_options: 'c_std=gnu11,c11').
  • Moduliuose, kuriuose failams apdoroti naudojamas „CustomTarget“, buvo pridėta galimybė tinkinti „ninja“ paslaugų programos išvestus pranešimus.
  • Build_target "jar" buvo pasenusi, o vietoj jo rekomenduojama iškviesti "jar()".
  • Parametras „env“ buvo pridėtas prie generator.process() metodo, kad būtų nustatytas aplinkos kintamasis, per kurį generatorius apdoros įvestį.
  • Nurodant kūrimo tikslo pavadinimus, susietus su vykdomaisiais failais, priesagos, tokios kaip „executable('foo', 'main.c', name_suffix: 'bar')“, leidžia generuoti papildomus vykdomuosius failus tame pačiame kataloge.
  • Prie funkcijos exectuable() pridėtas parametras „vs_module_defs“, kad būtų naudojamas def failas, kuris apibrėžia share_module() perduodamų funkcijų sąrašą.
  • Pridėtas parametras „default_options“ prie funkcijos find_program(), kad būtų galima nustatyti numatytąsias atsarginio subprojekto parinktis.
  • Pridėtas metodas fs.relative_to(), kuris grąžina santykinį pirmojo argumento kelią, palyginti su antrojo argumentu, jei pirmasis kelias yra. Pavyzdžiui, "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • Parametras next_symlinks buvo pridėtas prie funkcijų install_data(), install_headers() ir install_subdir(); kai nustatyta, sekamos simbolinės nuorodos.
  • Prie int.to_string() metodo buvo pridėtas parametras „fill“, kad eilutę laipsniškai užpildytų nuliais priekyje. Pavyzdžiui, iškvietus pranešimą(n.to_string(fill: 3)) n=4, bus gauta eilutė "004".
  • Pridėtas naujas tikslas „clang-tidy-fix“, kuris nurodo „clang-tidy“ programos paleidimą su žyma „-fix“.
  • Prie kompiliavimo komandos pridėta galimybė nurodyti surinkimo tikslo ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) galūnę (TARGET_SUFFIX).
  • Pridėtas aplinkos kintamasis MESON_PACKAGE_CACHE_DIR, kad būtų pakeistas kelias į paketo talpyklą (pavyzdžiui, antriniai projektai / paketo talpykla), leidžiantis naudoti bendrinamą talpyklą keliuose projektuose.
  • Pridėta komanda „meson setup --clearcache“, kad išvalytumėte nuolatinę talpyklą.
  • „Required“ raktinio žodžio palaikymas buvo įtrauktas į visus „has_*“ kompiliatoriaus tikrinimo metodus, pavyzdžiui, vietoj „assert(cc.has_function('some_function'))“ dabar galite nurodyti „cc.has_function('some_function' , būtina: tiesa)“.
  • Prie funkcijų share_library(), static_library(), library() ir share_module() pridėtas naujas raktinis žodis rust_abi, kuris turėtų būti naudojamas vietoj nebenaudojamo rust_crate_type.

Šaltinis: opennet.ru

Добавить комментарий