Meson build system version 1.3

Yo pibliye lage sistèm konstriksyon Meson 1.3.0, ki itilize pou konstwi pwojè tankou X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME ak GTK. Kòd Meson ekri nan Python epi li gen lisans anba Apache 2.0 lisans.

Objektif devlopman kle nan Meson se bay yon pwosesis asanble gwo vitès konbine avèk konvenyans ak fasilite nan itilize. Olye pou yo fè, bati a sèvi ak zouti Ninja pa default, men lòt backends tankou xcode ak VisualStudio ka itilize tou. Sistèm nan gen yon gestionnaire depandans milti-platfòm entegre ki pèmèt ou sèvi ak Meson pou konstwi pakè pou distribisyon. Règ asanble yo mete nan yon lang senplifye espesifik domèn, yo byen lizib ak konprann itilizatè a (dapre lide otè yo, pwomotè a ta dwe pase yon minimòm de tan ekri règ).

Konpile kwa ak bati sou Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS ak Windows lè l sèvi avèk GCC, Clang, Visual Studio ak lòt konpilateur yo sipòte. Li posib pou konstwi pwojè nan divès langaj pwogramasyon, tankou C, C++, Fortran, Java ak Rust. Yon mòd bati incrémentielle sipòte, nan ki se sèlman eleman ki gen rapò dirèkteman ak chanjman ki fèt depi dènye bati a yo rebati. Meson ka itilize pou jenere batiman repete, kote kouri bati nan diferan anviwònman rezilta nan ègzèkutabl konplètman idantik.

Prensipal inovasyon nan Meson 1.3:

  • Te ajoute opsyon "werror: true" nan metòd chèk du compiler.compiles(), compiler.links() ak compiler.run(), ki trete avètisman konpilatè kòm erè (yo ka itilize pou tcheke si kòd la bati san avètisman). ).
  • Te ajoute metòd has_define pou tcheke definisyon senbòl pa preprocesseur.
  • Yo te ajoute paramèt macro_name a nan fonksyon configure_file(), ajoute pwoteksyon macro pou koneksyon doub atravè "#include" ("gen ladan gad"), ki fèt nan style makro nan lang C (senplifye kreyasyon fichye konfigirasyon ak dinamik). non makro).
  • Yo te ajoute yon nouvo fòma pwodiksyon nan configure_file() - JSON ("output_format: json").
  • Te ajoute kapasite pou itilize lis valè nan paramèt c_std ak cpp_std (pa egzanp, "default_options: 'c_std=gnu11,c11′').
  • Nan modil ki sèvi ak CustomTarget pou trete dosye yo, yo te ajoute kapasite nan Customize pwodiksyon mesaj pa sèvis piblik ninja a.
  • build_target "jar" la te obsolète epi yo rekòmande apèl "jar()" la pito.
  • Yo te ajoute paramèt 'env' nan metòd generator.process() pou mete varyab anviwònman an kote dèlko a pral trete opinyon.
  • Lè yo presize non sib bati ki asosye ak ègzèkutabl, sifiks tankou "executable('foo', 'main.c', name_suffix: 'bar')" yo gen dwa jenere ègzèkutabl adisyonèl nan menm anyè a.
  • Te ajoute paramèt "vs_module_defs" nan fonksyon executable() pou itilize yon fichye def ki defini lis fonksyon yo pase nan shared_module().
  • Te ajoute paramèt 'default_options' nan fonksyon find_program() pou mete opsyon default pou subproject repli.
  • Te ajoute metòd fs.relative_to(), ki retounen chemen relatif la pou premye agiman an, parapò ak dezyèm lan, si premye chemen an egziste. Pou egzanp, "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • Paramèt_symlinks sa yo te ajoute nan fonksyon install_data(), install_headers() ak install_subdir() ; lè yo mete, yo swiv lyen senbolik yo.
  • Yo te ajoute yon paramèt "ranpli" nan metòd int.to_string() pou ranpli fisèl la ak zewo dirijan yo. Pou egzanp, rele mesaj (n.to_string (ranpli: 3)) pou n = 4 pral pwodwi fisèl "004".
  • Te ajoute yon nouvo sib, clang-tidy-fix, ki espesifye kouri sèvis piblik la clang-tidy ak drapo "-fix".
  • Kapasite pou presize sifiks (TARGET_SUFFIX) sib asanble a ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) te ajoute nan lòd konpile a.
  • Te ajoute varyab anviwònman MESON_PACKAGE_CACHE_DIR pou pase sou wout la nan kachèt pake a (subprojects/packagecache), pou egzanp, ki pèmèt ou itilize yon kachèt pataje nan plizyè pwojè.
  • Te ajoute kòmandman "meson setup --clearcache" pou netwaye kachèt ki pèsistan.
  • Sipò pou mo kle "obligatwa" yo te ajoute nan tout metòd chèk konpilatè "has_*", pa egzanp, olye pou yo "assert(cc.has_function('some_function'))" ou kapab kounye a presize "cc.has_function('some_function'). , obligatwa: vre)".
  • Yo te ajoute yon nouvo mo kle, rust_abi, nan fonksyon shared_library(), static_library(), library(), ak shared_module(), ki ta dwe itilize olye de rust_crate_type demode.

Sous: opennet.ru

Add nouvo kòmantè