Meson build system versiunea 1.3

A fost publicată lansarea sistemului de compilare Meson 1.3.0, care este folosit pentru a construi proiecte precum X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME și GTK. Codul Meson este scris în Python și este licențiat sub licența Apache 2.0.

Scopul cheie de dezvoltare al Meson este de a oferi un proces de asamblare de mare viteză, combinat cu confort și ușurință în utilizare. În loc de make, build folosește setul de instrumente Ninja în mod implicit, dar pot fi utilizate și alte backend-uri, cum ar fi xcode și VisualStudio. Sistemul are încorporat un handler de dependență multiplatformă care vă permite să utilizați Meson pentru a construi pachete pentru distribuții. Regulile de asamblare sunt stabilite într-un limbaj simplificat specific domeniului, sunt bine citite și ușor de înțeles pentru utilizator (conform ideii autorilor, dezvoltatorul ar trebui să petreacă un minim de timp scriind reguli).

Compilarea încrucișată și construirea pe Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS și Windows folosind GCC, Clang, Visual Studio și alte compilatoare sunt acceptate. Este posibil să construiți proiecte în diferite limbaje de programare, inclusiv C, C++, Fortran, Java și Rust. Este acceptat un mod de construire incremental, în care numai componentele care sunt direct legate de modificările efectuate de la ultima versiune sunt reconstruite. Meson poate fi folosit pentru a genera build-uri repetabile, unde rularea build-ului în medii diferite are ca rezultat executabile complet identice.

Principalele inovații ale Meson 1.3:

  • A fost adăugată opțiunea „werror: true” la metodele de verificare a compilatorului compiler.compiles(), compiler.links() și compiler.run(), care tratează avertismentele compilatorului ca erori (poate fi folosit pentru a verifica dacă codul este construit fără avertismente). ).
  • S-a adăugat metoda has_define pentru a verifica definiția simbolului de către preprocesor.
  • Parametrul macro_name a fost adăugat la funcția configure_file(), adăugând protecție macro pentru conexiuni duble prin „#include” (“include guards”), conceput în stilul macro-urilor în limbajul C (simplificarea creării fișierelor de configurare cu dinamică). nume de macro).
  • Un nou format de ieșire a fost adăugat la configure_file() - JSON ("output_format: json").
  • S-a adăugat posibilitatea de a utiliza liste de valori la parametrii c_std și cpp_std (de exemplu, „default_options: ‘c_std=gnu11,c11′’).
  • În modulele care utilizează CustomTarget pentru a procesa fișiere, a fost adăugată capacitatea de a personaliza mesajele ieșite de utilitarul ninja.
  • build_target „jar” a fost depreciat, iar apelul „jar()” este recomandat în schimb.
  • Parametrul „env” a fost adăugat la metoda generator.process() pentru a seta variabila de mediu prin care generatorul va procesa intrarea.
  • Când se specifică nume de țintă de construcție asociate cu executabile, sufixele precum „executable(’foo’, ‘main.c’, name_suffix: ‘bar’)” au permisiunea de a genera executabile suplimentare în același director.
  • S-a adăugat parametrul „vs_module_defs” la funcția executable() pentru a utiliza un fișier def care definește lista de funcții transmise la shared_module().
  • S-a adăugat parametrul „default_options” la funcția find_program() pentru a seta opțiunile implicite pentru subproiectul alternativ.
  • S-a adăugat metoda fs.relative_to(), care returnează calea relativă pentru primul argument, relativ la al doilea, dacă prima cale există. De exemplu, „fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • Parametrul follow_symlinks a fost adăugat la funcțiile install_data(), install_headers() și install_subdir(); când este setat, sunt urmate legăturile simbolice.
  • Un parametru „fill” a fost adăugat la metoda int.to_string() pentru a umple gradual șirul cu zerouri de început. De exemplu, apelarea mesaj(n.to_string(fill: 3)) pentru n=4 va produce șirul „004”.
  • S-a adăugat o nouă țintă, clang-tidy-fix, care specifică rularea utilitarului clang-tidy cu indicatorul „-fix”.
  • Capacitatea de a specifica sufixul (TARGET_SUFFIX) a țintei de asamblare ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) a fost adăugată la comanda de compilare.
  • S-a adăugat variabila de mediu MESON_PACKAGE_CACHE_DIR pentru a suprascrie calea către cache-ul pachetului (subproiecte/packagecache), de exemplu, permițându-vă să utilizați un cache partajat în mai multe proiecte.
  • S-a adăugat comanda „meson setup --clearcache” pentru a șterge memoria cache persistentă.
  • Suport pentru cuvântul cheie „necesar” a fost adăugat la toate metodele de verificare a compilatorului „has_*”, de exemplu, în loc de „assert(cc.has_function('some_function'))” acum puteți specifica „cc.has_function('some_function' , cerut: adevărat)”.
  • Un nou cuvânt cheie, rust_abi, a fost adăugat la funcțiile shared_library(), static_library(), library() și shared_module(), care ar trebui să fie folosit în locul rust_crate_type, depreciat.

Sursa: opennet.ru

Adauga un comentariu