Kutolewa kwa mfumo wa Meson 1.3

Mfumo wa uundaji wa Meson 1.3.0 umetolewa, ambao unatumika kujenga miradi kama vile Seva ya X.Org, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME na GTK. Nambari ya Meson imeandikwa kwa Python na ina leseni chini ya leseni ya Apache 2.0.

Lengo kuu la maendeleo ya Meson ni kutoa kasi ya juu ya mchakato wa mkutano pamoja na urahisi na urahisi wa matumizi. Badala ya kutengeneza matumizi, zana ya zana ya Ninja hutumiwa kwa chaguo-msingi wakati wa kujenga, lakini viunzi vingine vya nyuma kama vile xcode na VisualStudio pia vinaweza kutumika. Mfumo una kidhibiti cha utegemezi cha majukwaa mengi ambacho hukuruhusu kutumia Meson kuunda vifurushi vya usambazaji. Sheria za mkusanyiko zimebainishwa katika lugha iliyorahisishwa mahususi ya kikoa, zinaweza kusomeka na kueleweka kwa mtumiaji (kama ilivyokusudiwa na waandishi, msanidi programu anapaswa kutumia muda mdogo kuandika sheria).

Inasaidia ujumuishaji na ujenzi kwenye Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS na Windows kwa kutumia GCC, Clang, Visual Studio na vikusanyaji vingine. Inawezekana kujenga miradi katika lugha mbalimbali za programu, ikiwa ni pamoja na C, C ++, Fortran, Java na Rust. Hali ya ongezeko la ujenzi inatumika, ambapo vipengele pekee vinavyohusiana moja kwa moja na mabadiliko yaliyofanywa tangu muundo wa mwisho hujengwa upya. Meson inaweza kutumika kutengeneza miundo inayoweza kurudiwa, ambayo kuendesha jengo katika mazingira tofauti husababisha kizazi cha faili zinazoweza kutekelezwa zinazofanana kabisa.

Ubunifu kuu wa Meson 1.3:

  • Imeongeza chaguo "werror: true" kwenye mbinu za ukaguzi za mkusanyaji compiler.compiles(), compiler.links() na compiler.run(), ambayo huchukulia maonyo ya mkusanyaji kama makosa (inaweza kutumika kuangalia kwamba msimbo umeundwa bila maonyo. )
  • Imeongeza has_define mbinu ya kuangalia ufafanuzi wa ishara na kichakataji awali.
  • Kigezo cha jina la macro_name kimeongezwa kwenye kitendakazi cha configure_file(), na kuongeza ulinzi wa jumla kwa miunganisho maradufu kupitia "#include" ("jumuisha walinzi"), iliyoundwa kwa mtindo wa macros katika lugha ya C (kurahisisha uundaji wa faili za usanidi na zenye nguvu. majina makubwa).
  • Umbizo jipya la towe limeongezwa kwa configure_file() - JSON ("output_format: json").
  • Imeongeza uwezo wa kutumia orodha za thamani kwenye vigezo vya c_std na cpp_std (kwa mfano, "chaguo_msingi: 'c_std=gnu11,c11β€²').
  • Katika moduli zinazotumia CustomTarget kuchakata faili, uwezo wa kubinafsisha utoaji wa ujumbe na matumizi ya ninja umeongezwa.
  • build_target "jar" imeacha kutumika na simu ya "jar()" inapendekezwa badala yake.
  • Kigezo cha 'env' kimeongezwa kwa njia ya jenereta.process() ili kuweka utofauti wa mazingira ambao jenereta itachakata ingizo.
  • Wakati wa kubainisha majina lengwa ya miundo yanayohusishwa na vitekelezo, viambishi tamati kama vile "inayoweza kutekelezwa('foo', 'main.c', name_suffix: 'bar')" inaruhusiwa kutoa utekelezo wa ziada katika saraka sawa.
  • Aliongeza kigezo cha "vs_module_defs" kwenye kitendakazi kinachoweza kutekelezwa() ili kutumia faili ya def inayofafanua orodha ya chaguo za kukokotoa zilizopitishwa kwa shared_module().
  • Imeongeza kigezo cha 'chaguo-msingi_chaguo-msingi' kupata kitendakazi cha find_program() ili kuweka chaguo-msingi za mradi mdogo mbadala.
  • Njia ya fs.relative_to() iliyoongezwa, ambayo inarudisha njia ya jamaa kwa hoja ya kwanza, inayohusiana na ya pili, ikiwa njia ya kwanza ipo. Kwa mfano, "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • Vigezo_vifuatavyo_viungo vimeongezwa kwenye vitendaji vya install_data(), install_headers() na install_subdir(); inapowekwa, viungo vya ishara hufuatwa.
  • Kigezo cha "kujaza" kimeongezwa kwa mbinu ya int.to_string() ili kujaza mfuatano kwa sifuri zinazoongoza. Kwa mfano, kupiga ujumbe(n.to_string(fill: 3)) kwa n=4 kutazalisha kamba "004".
  • Imeongeza lengo jipya, clang-tidy-fix, ambayo inabainisha kuendesha shirika la clang-tidy na bendera ya "-fix".
  • Uwezo wa kubainisha kiambishi tamati (TARGET_SUFFIX) cha lengo la kuunganisha ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) umeongezwa kwenye amri ya mkusanyo.
  • Tofauti ya mazingira iliyoongezwa MESON_PACKAGE_CACHE_DIR ili kubatilisha njia ya akiba ya kifurushi (miradi midogo/kache ya kifurushi), kwa mfano, kukuruhusu kutumia akiba iliyoshirikiwa katika miradi kadhaa.
  • Imeongeza amri ya "meson setup --clearcache" ili kufuta akiba inayoendelea.
  • Usaidizi wa neno kuu la β€œrequired” umeongezwa kwa mbinu zote za kukagua mkusanyaji wa β€œhas_*”, kwa mfano, badala ya β€œassert(cc.has_function('some_function'))” sasa unaweza kubainisha β€œcc.has_function('some_function') , inahitajika: kweli)”.
  • Nenomsingi jipya, rust_abi, limeongezwa kwa shared_library(), static_library(), library(), na shared_module() vitendaji, ambavyo vinafaa kutumika badala ya rust_crate_type iliyoacha kutumika.

Chanzo: opennet.ru

Kuongeza maoni