Meson build system release 1.3

U sistema di creazione Meson 1.3.0 hè statu liberatu, chì hè utilizatu per custruisce prughjetti cum'è X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME è GTK. U codice di Meson hè scrittu in Python è hè licenziatu sottu a licenza Apache 2.0.

U scopu chjave di u sviluppu Meson hè di furnisce una alta velocità di u prucessu di assemblea cumminata cù comodità è facilità d'usu. Invece di l'utilità di creazione, u toolkit Ninja hè utilizatu per difettu quandu si custruisce, ma altri backends cum'è xcode è VisualStudio ponu ancu esse usatu. U sistema hà un gestore di dependenza multi-piattaforma integrata chì permette di utilizà Meson per custruisce pacchetti per distribuzioni. I reguli di l'assemblea sò specificati in una lingua simplificata specifica di u duminiu, sò assai leghjite è cumprendi per l'utilizatori (cum'è intesu da l'autori, u sviluppatore deve passà un minimu di tempu scrivendu regule).

Supporta a compilazione incruciata è a custruzione nantu à Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS è Windows cù GCC, Clang, Visual Studio è altri compilatori. Hè pussibule di custruisce prughjetti in diverse lingue di prugrammazione, cumprese C, C++, Fortran, Java è Rust. U modu di creazione incrementale hè supportatu, in quale solu i cumpunenti direttamente ligati à i cambiamenti fatti da l'ultima custruzzione sò ricustruiti. Meson pò esse usatu per generà custruzzioni ripetibili, in quale l'esecuzione di a custruzzione in ambienti differenti si traduce in a generazione di fugliali eseguibili completamente identici.

Principali innovazioni di Meson 1.3:

  • Aggiunta l'opzione "werror: true" à i metudi di verificazione di compilatore compiler.compiles (), compiler.links () è compiler.run (), chì tratta l'avvirtimenti di compilatore cum'è errori (pò esse usatu per verificà chì u codice hè custruitu senza avvisi). ).
  • Aggiuntu u metudu has_define per verificà a definizione di simbulu da u preprocessore.
  • U paràmetru macro_name hè statu aghjuntu à a funzione configure_file(), aghjustendu a prutezzione di macro per doppia cunnessione attraversu "#include" ("include guards"), cuncepitu in u stilu di macros in lingua C (simplificà a creazione di schedarii di cunfigurazione cù dinamica). nomi macro).
  • Un novu furmatu di output hè statu aghjuntu à configure_file () - JSON ("output_format: json").
  • Aggiunta a capacità di utilizà listi di valori à i paràmetri c_std è cpp_std (per esempiu, "default_options: 'c_std=gnu11,c11′').
  • In i moduli chì utilizanu CustomTarget per processà i fugliali, hè stata aghjunta a capacità di persunalizà i missaghji output da l'utilità ninja.
  • U build_target "jar" hè statu deprecatu è a chjama "jar ()" hè cunsigliatu invece.
  • U paràmetru "env" hè statu aghjuntu à u metudu generator.process() per stabilisce a variabile di l'ambiente per quale u generatore processerà l'input.
  • Quandu si specificanu i nomi di destinazione di creazione assuciati cù eseguibili, i suffissi cum'è "executable('foo', 'main.c', name_suffix: 'bar')" sò permessi di generà eseguibili supplementari in u stessu cartulare.
  • Aggiuntu u paràmetru "vs_module_defs" à a funzione exectuable () per utilizà un schedariu def chì definisce a lista di funzioni passate à shared_module ().
  • Aggiuntu u paràmetru "default_options" à a funzione find_program () per stabilisce l'opzioni predeterminate per u sottuprogettu fallback.
  • Added fs.relative_to () metudu, chì torna a strada relative per u primu argumentu, relative à u sicondu, se a prima strada esiste. Per esempiu, "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • U paràmetru seguente_symlinks hè statu aghjuntu à e funzioni install_data(), install_headers() è install_subdir() ; quandu si stabilisce, i ligami simbolichi sò seguiti.
  • Un paràmetru "fill" hè statu aghjuntu à u metudu int.to_string() per riempie in modu incrementale a stringa cù zeri principali. Per esempiu, chjamà message (n.to_string (fill: 3)) per n = 4 pruducerà a stringa "004".
  • Aggiuntu un novu target, clang-tidy-fix, chì specifica l'esecuzione di l'utilità clang-tidy cù a bandiera "-fix".
  • A capacità di specificà u suffissu (TARGET_SUFFIX) di u scopu di l'assemblea ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) hè stata aghjunta à u cumandamentu di compilazione.
  • A variabile ambientale aghjunta MESON_PACKAGE_CACHE_DIR per annullà u percorsu à a cache di u pacchettu (subprojects/packagecache), per esempiu, chì permette di utilizà un cache spartutu in parechji prughjetti.
  • Aggiuntu u cumandimu "meson setup --clearcache" per sguassà a cache persistente.
  • U supportu per a chjave "necessaria" hè stata aghjunta à tutti i metudi di verificazione di compilatore "has_*", per esempiu, invece di "assert (cc.has_function('some_function'))" pudete avà specificà "cc.has_function('some_function'). , necessariu: veru)".
  • Una nova keyword, rust_abi, hè stata aghjunta à e funzioni shared_library(), static_library(), library() è shared_module(), chì deve esse usata invece di u rust_crate_type obsoleto.

Source: opennet.ru

Add a comment