Meson build sistem izdanje 0.51

objavljeno build sistemsko izdanje Mezon 0.51, koji se koristi za izgradnju projekata kao što su X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME i GTK+. Meson kod je napisan u Python-u i isporučuje se licenciran pod Apache 2.0.

Ključni cilj razvoja Meson-a je da obezbedi veliku brzinu procesa montaže u kombinaciji sa praktičnošću i lakoćom korišćenja. Umjesto uslužnog programa make, zadana verzija koristi alat Ninja, ali je moguće koristiti i druge pozadine, kao što su xcode i VisualStudio. Sistem ima ugrađeni višeplatformski rukovalac zavisnosti koji vam omogućava da koristite Meson za pravljenje paketa za distribucije. Pravila asemblera su specificirana na pojednostavljenom jeziku specifičnom za domenu, vrlo su čitljiva i razumljiva korisniku (kako su autori zamislili, programer bi trebao potrošiti minimalno vrijeme na pisanje pravila).

Podržano je unakrsno kompajliranje i izgradnja na Linux, macOS i Windows pomoću GCC, Clang, Visual Studio i drugih kompajlera. Moguće je graditi projekte u različitim programskim jezicima, uključujući C, C++, Fortran, Java i Rust. Podržan je način inkrementalne gradnje, u kojem se obnavljaju samo komponente koje su direktno povezane s promjenama napravljenim od posljednje izgradnje. Meson se može koristiti za generiranje ponovljivih build-ova, u kojima pokretanje build-a u različitim okruženjima rezultira generiranjem potpuno identičnih izvršnih datoteka.

Glavni inovacije Meson 0.51:

  • Dodata podrška za transparentnu izgradnju postojećih projekata koji koriste CMake build skripte. Meson sada može direktno da gradi jednostavne podprojekte (kao što su pojedinačne biblioteke) koristeći CMake modul, slično standardnim podprojektima (uključujući CMake podprojekte mogu biti smešteni u direktorijum potprojekata);
  • Za sve korišćene kompajlere, preliminarno testiranje je uključeno kroz sklapanje i izvršavanje jednostavnih test fajlova (provera ispravnosti), ne ograničavajući se na testiranje korisnički specificiranih zastavica za unakrsne kompajlere (od sada se proveravaju i kompajleri koji su izvorni za trenutnu platformu) .
  • Dodata je mogućnost definisanja opcija komandne linije koje se koriste tokom unakrsnog prevođenja, sa vezivanjem navođenjem prefiksa platforme ispred opcije. Ranije su opcije komandne linije pokrivale samo izvorne verzije i nisu mogle biti specificirane za unakrsno prevođenje. Opcije komandne linije sada se primjenjuju bez obzira na to da li gradite nativno ili unakrsno kompajlirate, osiguravajući da native i cross-builds daju identične rezultate;
  • Dodata mogućnost da se na komandnoj liniji više puta specificira oznaka “--cross-file” za popis više unakrsnih datoteka;
  • Dodata podrška za ICL kompajler (Intel C/C++ kompajler) za Windows platformu (ICL.EXE i ifort);
  • Dodata podrška za početni alat za Xtensa CPU (xt-xcc, xt-xc++, xt-nm);
  • Metoda “get_variable” dodata je objektu “dependency” koja vam omogućava da dobijete vrijednost varijable bez uzimanja u obzir tipa trenutne zavisnosti (na primjer, dep.get_variable(pkg-config : 'var- ime', cmake : 'COP_VAR_NAME));
  • Dodan je novi argument opcija ciljnog sklopa, "link_language", da se eksplicitno navede jezik koji se koristi prilikom pozivanja povezivača. Na primjer, glavni Fortran program bi mogao pozvati C/C++ kod, koji bi automatski izabrao C/C++ kada bi se trebao koristiti Fortran linker;
  • Rukovanje CPPFLAGS predprocesorskim zastavicama je promijenjeno. Dok je Meson ranije pohranjivao CPPFLAGS i zastavice kompilacije specifične za jezik (CFLAGS, CXXFLAGS) odvojeno, one se sada obrađuju neodvojivo i zastavice navedene u CPPFLAGS se koriste kao drugi izvor kompilacijskih zastavica za jezike koji ih podržavaju;
  • Izlaz custom_target i custom_target[i] sada se može koristiti kao argument u operacijama link_with i link_whole;
  • Generatori sada imaju mogućnost specificiranja dodatnih ovisnosti koristeći opciju “zavisi” (na primjer, generator(program_runner, izlaz: ['@[email zaštićen]'], zavisi: exe));
  • Dodata statička opcija za find_library kako bi se omogućila pretraga da uključuje samo statički povezane biblioteke;
  • Za python.find_installation, dodata je mogućnost utvrđivanja prisutnosti datog Python modula za određenu verziju Pythona;
  • Dodan novi modul unstable-kconfig za raščlanjivanje kconfig fajlova;
  • Dodata nova naredba “subprojects foreach”, koja uzima komandu sa argumentima i pokreće je u svim direktorijima podprojekata;

izvor: opennet.ru

Dodajte komentar