Mesoni ehitussüsteemi väljalase 1.3

Avaldatud on Meson 1.3.0 ehitussüsteemi väljalase, mida kasutatakse selliste projektide ehitamiseks nagu X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME ja GTK. Mesoni kood on kirjutatud Pythonis ja litsentsitud Apache 2.0 litsentsi alusel.

Mesoni arenduse põhieesmärk on pakkuda kiiret montaažiprotsessi koos mugavuse ja kasutuslihtsusega. Make asemel kasutab järg vaikimisi Ninja tööriistakomplekti, kuid kasutada saab ka muid taustaprogramme, nagu xcode ja VisualStudio. Süsteemil on sisseehitatud mitme platvormi sõltuvuse töötleja, mis võimaldab kasutada Mesonit distributsioonide pakettide koostamiseks. Koostereeglid on seatud lihtsustatud domeenipõhises keeles, need on hästi loetavad ja kasutajale arusaadavad (autorite idee kohaselt peaks arendaja kulutama reeglite kirjutamisele minimaalselt aega).

Toetatud on Linuxi, Illumos/Solarise, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS-i ja Windowsi ristkompileerimine ja ehitamine GCC, Clangi, Visual Studio ja muude kompilaatorite abil. Võimalik on ehitada projekte erinevates programmeerimiskeeltes, sealhulgas C, C++, Fortran, Java ja Rust. Toetatakse järkjärgulist ehitusrežiimi, milles ehitatakse ümber ainult need komponendid, mis on otseselt seotud pärast viimast ehitamist tehtud muudatustega. Mesonit saab kasutada korratavate ehituste genereerimiseks, kus ehitamist erinevates keskkondades käivitades saadakse täiesti identsed käivitatavad failid.

Meson 1.3 peamised uuendused:

  • Kompilaatori kontrollimismeetoditele compiler.compiles(), compiler.links() ja compiler.run() lisati valik “werror: true”, mis käsitleb kompilaatori hoiatusi vigadena (saab kontrollida, kas kood on koostatud ilma hoiatusteta ).
  • Lisatud on has_define meetod sümboli definitsiooni kontrollimiseks eelprotsessori järgi.
  • Funktsioonile configure_file() on lisatud parameeter macro_name, mis lisab topeltühendustele makrokaitse läbi “#include” (“include valves”), mis on kujundatud makrode stiilis C-keeles (lihtsustades konfiguratsioonifailide loomist dünaamilise funktsiooniga makro nimed).
  • Failile configure_file() on lisatud uus väljundvorming - JSON ("output_format: json").
  • Lisati võimalus kasutada väärtuste loendeid parameetritele c_std ja cpp_std (näiteks „default_options: 'c_std=gnu11,c11').
  • Moodulitele, mis kasutavad failide töötlemiseks CustomTargetit, on lisatud võimalus kohandada ninja-utiliidi sõnumeid.
  • Build_target "jar" on aegunud ja selle asemel on soovitatav kutsuda "jar()".
  • Meetodile generator.process() on lisatud parameeter 'env', et määrata keskkonnamuutuja, mille kaudu generaator sisendit töötleb.
  • Täitmisfailidega seotud järgu sihtnimede määramisel lubatakse järelliidetel nagu "executable('foo', 'main.c', name_suffix: 'bar')" luua samas kataloogis täiendavaid käivitatavaid faile.
  • Funktsioonile exectuable() lisati parameeter "vs_module_defs", et kasutada def-faili, mis määratleb jagatud_mooduli() funktsioonide loendi.
  • Funktsiooni find_program() jaoks on lisatud parameeter 'default_options', et määrata varualamprojekti vaikesuvandid.
  • Lisatud on meetod fs.relative_to(), mis tagastab esimese argumendi suhtelise tee teise suhtes, kui esimene tee on olemas. Näiteks "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • Funktsioonidele install_data(), install_headers() ja install_subdir() on lisatud parameeter next_symlinks, mille määramisel järgitakse sümboolseid linke.
  • Meetodile int.to_string() on lisatud parameeter "fill", et stringi järk-järgult täita eesolevate nullidega. Näiteks sõnumi (n.to_string(fill: 3)) kutsumine n=4 korral annab stringi "004".
  • Lisati uus sihtmärk clang-tidy-fix, mis määrab clang-tidy utiliidi käitamise lipuga "-fix".
  • Kompileerimiskäsule on lisatud võimalus määrata kooste sihtmärgi ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) järelliide (TARGET_SUFFIX).
  • Lisatud keskkonnamuutuja MESON_PACKAGE_CACHE_DIR, et alistada näiteks paketi vahemälu (alamprojektid/paketivahemälu) tee, võimaldades kasutada jagatud vahemälu mitmes projektis.
  • Püsiva vahemälu tühjendamiseks on lisatud käsk "meson setup --clearcache".
  • Kõigile "has_*" kompilaatori kontrollimeetoditele on lisatud märksõna "required" tugi, näiteks "assert(cc.has_function('some_function'))" asemel saate nüüd määrata "cc.has_function('some_function'). , nõutav: tõsi)”.
  • Funktsioonidele shared_library(), static_library(), raamatukogu() ja jagatud_moodul() on lisatud uus märksõna rust_abi, mida tuleks kasutada aegunud rust_crate_type asemel.

Allikas: opennet.ru

Lisa kommentaar