Meson build sistema rilaxx 1.3

Ġie ppubblikat ir-rilaxx tas-sistema tal-bini Meson 1.3.0, li tintuża biex jinbnew proġetti bħal X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME u GTK. Il-kodiċi Meson huwa miktub f'Python u huwa liċenzjat taħt il-liċenzja Apache 2.0.

L-għan ewlieni ta 'żvilupp ta' Meson huwa li jipprovdi proċess ta 'assemblaġġ ta' veloċità għolja flimkien ma 'konvenjenza u faċilità ta' użu. Minflok tagħmel, il-bini juża l-għodda Ninja awtomatikament, iżda backends oħra bħal xcode u VisualStudio jistgħu jintużaw ukoll. Is-sistema għandha mmaniġġjar tad-dipendenza multi-pjattaforma mibni li jippermettilek tuża Meson biex tibni pakketti għad-distribuzzjonijiet. Ir-regoli tal-assemblaġġ huma stabbiliti f'lingwa simplifikata speċifika għad-dominju, jinqraw tajjeb u jinftiehmu mill-utent (skond l-idea tal-awturi, l-iżviluppatur għandu jqatta 'minimu ta' ħin jikteb ir-regoli).

Il-kumpilazzjoni inkroċjata u l-bini fuq Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS u Windows bl-użu ta 'GCC, Clang, Visual Studio u kompilaturi oħra huma appoġġjati. Huwa possibbli li jinbnew proġetti f'diversi lingwi ta' programmar, inklużi C, C++, Fortran, Java u Rust. Modalità ta 'bini inkrementali hija appoġġjata, li fiha biss komponenti li huma direttament relatati mal-bidliet li saru mill-aħħar bini huma mibnija mill-ġdid. Meson jista 'jintuża biex jiġġenera bini ripetibbli, fejn it-tħaddim tal-bini f'ambjenti differenti jirriżulta f'eżekutibbli kompletament identiċi.

Innovazzjonijiet ewlenin ta 'Meson 1.3:

  • Żid l-għażla “werror: true” mal-metodi ta’ kontroll tal-kompilatur compiler.compiles(), compiler.links() u compiler.run(), li tittratta t-twissijiet tal-kompilatur bħala żbalji (jista’ jintuża biex jiċċekkja li l-kodiċi huwa mibni mingħajr twissijiet). ).
  • Miżjud has_define metodu biex tiċċekkja d-definizzjoni tas-simbolu minn preproċessur.
  • Il-parametru macro_name ġie miżjud mal-funzjoni configure_file(), u żżid il-protezzjoni makro għal konnessjonijiet doppji permezz ta '"#include" ("inkludi gwardji"), iddisinjat fl-istil ta' macros fil-lingwa Ċ (li tissimplifika l-ħolqien ta 'fajls konfigurati b'dinamika ismijiet makro).
  • Ġie miżjud format ta 'output ġdid ma' configure_file() - JSON ("output_format: json").
  • Żid il-ħila li tuża listi ta’ valuri mal-parametri c_std u cpp_std (pereżempju, “default_options: ‘c_std=gnu11,c11′’).
  • F'moduli li jużaw CustomTarget biex jipproċessaw fajls, ġiet miżjuda l-abbiltà li tippersonalizza l-output tal-messaġġi mill-utilità ninja.
  • Il-build_target "jar" ġiet deprecata u s-sejħa "jar()" hija rakkomandata minflok.
  • Il-parametru 'env' ġie miżjud mal-metodu generator.process() biex jiġi stabbilit il-varjabbli ambjentali li permezz tiegħu l-ġeneratur se jipproċessa l-input.
  • Meta jiġu speċifikati l-ismijiet tal-mira tal-bini assoċjati ma 'eżekutibbli, suffissi bħal "executable('foo', 'main.c', name_suffix: 'bar')" huma permessi li jiġġeneraw eżekutibbli addizzjonali fl-istess direttorju.
  • Żid il-parametru “vs_module_defs” mal-funzjoni exectuable() biex juża fajl def li jiddefinixxi l-lista ta’ funzjonijiet mgħoddija lil shared_module().
  • Miżjud parametru 'default_options' mal-funzjoni find_program() biex jiġu stabbiliti għażliet default għas-sottoproġett ta' riżerva.
  • Miżjud fs.relative_to() metodu, li jirritorna l-mogħdija relattiva għall-ewwel argument, relattiv għat-tieni, jekk l-ewwel mogħdija teżisti. Per eżempju, "fs.relative_to('/prefiss/lib', '/prefiss/bin') == '../lib')".
  • Il-parametru li ġej_symlinks ġie miżjud mal-funzjonijiet install_data(), install_headers() u install_subdir(); meta ssettjat, jiġu segwiti links simboliċi.
  • Parametru "mili" ġie miżjud mal-metodu int.to_string() biex timla s-sekwenza b'mod inkrementali b'żerijiet ewlenin. Pereżempju, is-sejħa ta' message(n.to_string(fill: 3)) għal n=4 se tipproduċi s-sekwenza "004".
  • Miżjud mira ġdida, clang-tidy-fix, li tispeċifika t-tħaddim tal-utilità clang-tidy bil-bandiera "-fix".
  • Il-ħila li jiġi speċifikat is-suffiss (TARGET_SUFFIX) tal-mira tal-assemblaġġ ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) ġiet miżjuda mal-kmand tal-kompilazzjoni.
  • Miżjud varjabbli ambjentali MESON_PACKAGE_CACHE_DIR biex jegħleb il-mogħdija għall-cache tal-pakkett (subprojects/packagecache), pereżempju, li jippermettilek tuża cache kondiviża f'diversi proġetti.
  • Miżjud "meson setup --clearcache" kmand biex tneħħi l-cache persistenti.
  • L-appoġġ għall-kelma prinċipali “meħtieġa” ġie miżjud mal-metodi kollha ta’ kontroll tal-kompilatur “has_*”, pereżempju, minflok “assert(cc.has_function('some_function'))” issa tista’ tispeċifika “cc.has_function('some_function' , meħtieġ: veru)”.
  • Kelma ġdida, rust_abi, ġiet miżjuda mal-funzjonijiet shared_library(), static_library(), library(), u shared_module(), li għandhom jintużaw minflok il-rust_crate_type deprecated.

Sors: opennet.ru

Żid kumment