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 ristkompileerimine ja assembler. Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS Đž Windows Kasutades GCC-d, Clangi, Visual Studiot ja teisi kompilaatoreid. Projekte saab luua erinevates programmeerimiskeeltes, sealhulgas C, C++, Fortran, Java ja Rust. Toetatud on inkrementaalne ehitusreĆŸiim, mis ehitab uuesti ainult komponendid, mis on otseselt seotud muudatustega, mis on tehtud pĂ€rast eelmist ehitust. Mesoni saab kasutada korduvate ehituste loomiseks, kus ehituse kĂ€ivitamine erinevates keskkondades annab tulemuseks 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
