Meson build system versiunea 0.52

publicat lansarea sistemului de construire Mezon 0.52, 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 furnizat licențiat sub Apache 2.0.

Scopul cheie al dezvoltării Meson este de a oferi o viteză mare a procesului de asamblare, combinată cu comoditate și ușurință în utilizare. În loc de utilitarul make, versiunea implicită folosește setul de instrumente Ninja, dar este posibil să folosiți ș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 specificate într-un limbaj simplificat specific domeniului, sunt foarte lizibile și ușor de înțeles pentru utilizator (așa cum intenționează autorii, dezvoltatorul ar trebui să petreacă un minim de timp scriind reguli).

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

Principalul inovații Meson 0.52:

  • S-a adăugat suport experimental pentru Webassembly folosind Emscripten ca compilator;
  • Suportul pentru platformele Illumos și Solaris a fost îmbunătățit semnificativ și adus în stare de funcționare;
  • Este posibil să se ignore scripturile de internaționalizare bazate pe gettext dacă sistemul nu are instalate instrumentele gettext (anterior, a fost afișată o eroare la utilizarea modulului i18n pe sisteme fără gettext);
  • Suport îmbunătățit pentru bibliotecile statice. Multe probleme la utilizarea bibliotecilor statice dezinstalate au fost rezolvate;
  • S-a adăugat posibilitatea de a folosi dicționare pentru a atribui variabile de mediu. Când apelați mediu(), primul element poate fi acum specificat ca un dicționar în care variabilele de mediu sunt definite sub formă de cheie/valoare. Aceste variabile vor fi transferate la Environment_object ca și cum ar fi setate individual prin metoda set(). De asemenea, dicționarele pot fi trecute acum la diverse funcții care acceptă un argument „env”;
  • S-a adăugat funcția „runtarget alias_target(target_name, dep1, ...)” care creează o nouă țintă de compilare de prim nivel care poate fi apelată cu backend-ul de construcție selectat (de exemplu, „ninja target_name”). Această țintă de compilare nu rulează nicio comandă, dar asigură că toate dependențele sunt construite;
  • Setarea automată activată a variabilei de mediu PKG_CONFIG_SYSROOT_DIR în timpul compilării încrucișate dacă există o setare sys_root în secțiunea „[properties]”;
  • S-a adăugat opțiunea „--gdb-path” pentru a determina calea către depanatorul GDB atunci când specificați opțiunea „--gdb testname” pentru a rula GDB cu scriptul de testare specificat;
  • S-a adăugat detectarea automată a țintei de construcție clang-tidy pentru a rula acest linter cu toate fișierele sursă. Ținta este creată dacă clang-tidy este disponibil în sistem și fișierul „.clang-tidy” (sau „_clang-tidy”) este definit în rădăcina proiectului;
  • S-a adăugat dependență („blocuri”) pentru utilizare în extensia Clang Blocuri;
  • Vederile linker și compilator sunt separate, permițând utilizarea diferitelor combinații de compilatoare și linkere;
  • S-a adăugat metoda all_dependencies() la obiectele SourceSet în plus față de metoda all_sources();
  • În run_project_tests.py, opțiunea „--only” a fost adăugată pentru a rula selectiv teste (de exemplu, „python run_project_tests.py —only fortran python3”);
  • Funcția find_program() are acum capacitatea de a căuta doar versiunile necesare ale unui program (versiunea este determinată prin rularea programului cu opțiunea „-version”);
  • Pentru a controla exportul simbolurilor, opțiunea vs_module_defs a fost adăugată la funcția shared_module(), similar cu shared_library();
  • Modulul kconfig a fost extins pentru a suporta configure_file() pentru specificarea unui fișier de intrare;
  • S-a adăugat posibilitatea de a specifica mai multe fișiere de intrare pentru handlerele „command:” la configure_file();
  • Comanda „dist” pentru crearea unei arhive a fost mutată în categoria comenzilor de prim nivel (anterior comanda era legată de ninja). S-a adăugat opțiunea „--formats” pentru a defini tipurile de arhive care trebuie create (de exemplu,
    „meson dist -formats=xztar,zip”).

Sursa: opennet.ru

Adauga un comentariu