Meson build system versiunea 0.51

publicat lansarea sistemului de construire Mezon 0.51, 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).

Compilarea încrucișată și construirea pe Linux, 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 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.51:

  • S-a adăugat suport pentru construirea transparentă a proiectelor existente care utilizează scripturi de compilare CMake. Meson poate acum construi direct subproiecte simple (cum ar fi biblioteci unice) folosind modulul CMake, similar subproiectelor standard (inclusiv subproiectele CMake pot fi plasate în directorul subproiecte);
  • Pentru toate compilatoarele utilizate, testarea preliminară este inclusă prin asamblarea și execuția unor fișiere de testare simple (verificarea corectă), fără a se limita la testarea steaguri specificate de utilizator pentru compilatoare încrucișate (de acum înainte sunt verificate și compilatoarele native pe platforma actuală) .
  • S-a adăugat capacitatea de a defini opțiunile liniei de comandă utilizate în timpul compilării încrucișate, cu legare prin specificarea unui prefix de platformă înainte de opțiune. Anterior, opțiunile liniei de comandă acopereau doar versiunile native și nu puteau fi specificate pentru compilare încrucișată. Opțiunile din linia de comandă se aplică acum indiferent dacă construiți nativ sau compilați încrucișat, asigurându-vă că versiunile native și încrucișate produc rezultate identice;
  • S-a adăugat posibilitatea de a specifica semnalul „--cross-file” de mai multe ori pe linia de comandă pentru a lista mai multe fișiere încrucișate;
  • S-a adăugat suport pentru compilatorul ICL (Intel C/C++ Compiler) pentru platforma Windows (ICL.EXE și ifort);
  • S-a adăugat suport inițial pentru setul de instrumente pentru procesoarele Xtensa (xt-xcc, xt-xc++, xt-nm);
  • Metoda „get_variable” a fost adăugată la obiectul „dependency”, care vă permite să obțineți valoarea unei variabile fără a lua în considerare tipul dependenței curente (de exemplu, dep.get_variable(pkg-config : 'var- nume', cmake : 'COP_VAR_NAME));
  • S-a adăugat un nou argument pentru opțiunile de asamblare țintă, „link_language”, pentru a specifica în mod explicit limba folosită la apelarea linkerului. De exemplu, un program principal Fortran ar putea apela codul C/C++, care ar selecta automat C/C++ atunci când ar trebui utilizat linkerul Fortran;
  • Gestionarea steagurilor de preprocesor CPPFLAGS a fost schimbată. În timp ce Meson a stocat anterior CPPFLAGS și steaguri de compilare specifice limbii (CFLAGS, CXXFLAGS) separat, acestea sunt acum procesate inseparabil, iar steaguri listate în CPPFLAGS sunt folosite ca o altă sursă de steaguri de compilare pentru limbile care le acceptă;
  • Ieșirea custom_target și custom_target[i] poate fi acum folosită ca argumente în operațiunile link_with și link_whole;
  • Generatorii au acum capacitatea de a specifica dependențe suplimentare folosind opțiunea „depends” (de exemplu, generator(program_runner, output: ['@)[e-mail protejat]'], depinde: exe));
  • S-a adăugat o opțiune statică la find_library pentru a permite căutării să includă numai biblioteci legate static;
  • Pentru python.find_installation, a fost adăugată capacitatea de a determina prezența unui anumit modul Python pentru o anumită versiune de Python;
  • S-a adăugat un nou modul unstable-kconfig pentru analizarea fișierelor kconfig;
  • S-a adăugat o nouă comandă „subprojects foreach”, care preia o comandă cu argumente și o rulează în toate directoarele subproiectelor;

Sursa: opennet.ru

Adauga un comentariu