Puštanje u promet montažnog sustava Meson 1.3

Objavljeno je izdanje Meson 1.3.0 build sustava 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 Pythonu i licenciran je pod licencom Apache 2.0.

Ključni razvojni cilj tvrtke Meson je osigurati brzi proces sklapanja u kombinaciji s praktičnošću i jednostavnošću korištenja. Umjesto make, build prema zadanim postavkama koristi Ninja toolkit, ali se mogu koristiti i drugi backendovi kao što su xcode i VisualStudio. Sustav ima ugrađeni rukovatelj ovisnosti za više platformi koji vam omogućuje korištenje Mesona za izradu paketa za distribucije. Pravila asemblera postavljena su na pojednostavljenom jeziku specifičnom za domenu, dobro su čitljiva i razumljiva korisniku (prema ideji autora, programer bi trebao potrošiti minimalno vremena na pisanje pravila).

Podržano je unakrsno prevođenje i izgradnja na Linuxu, Illumos/Solarisu, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS i Windows koristeći GCC, Clang, Visual Studio i druge kompajlere. Moguće je izraditi projekte u različitim programskim jezicima, uključujući C, C++, Fortran, Java i Rust. Podržan je inkrementalni način gradnje, u kojem se ponovno grade samo komponente koje su izravno povezane s promjenama učinjenima od posljednjeg builda. Meson se može koristiti za generiranje ponovljivih nadogradnji, pri čemu izvođenje nadogradnje u različitim okruženjima rezultira potpuno identičnim izvršnim datotekama.

Glavne inovacije Meson 1.3:

  • Dodana je opcija “werror: true” metodama provjere prevoditelja compiler.compiles(), compiler.links() i compiler.run(), koja tretira upozorenja prevoditelja kao pogreške (može se koristiti za provjeru je li kod izgrađen bez upozorenja ).
  • Dodana has_define metoda za provjeru definicije simbola pretprocesorom.
  • Parametar macro_name dodan je u funkciju configure_file(), dodajući makro zaštitu za dvostruke veze putem “#include” (“uključi čuvare”), dizajniranu u stilu makronaredbi u jeziku C (pojednostavljujući stvaranje konfiguracijskih datoteka s dinamičkim imena makronaredbi).
  • Novi izlazni format dodan je u configure_file() - JSON ("output_format: json").
  • Dodana je mogućnost korištenja popisa vrijednosti parametrima c_std i cpp_std (na primjer, “default_options: 'c_std=gnu11,c11′’).
  • U modulima koji koriste CustomTarget za obradu datoteka, dodana je mogućnost prilagodbe izlaza poruka ninja uslužnog programa.
  • build_target "jar" je zastario i umjesto njega se preporučuje poziv "jar()".
  • Parametar 'env' dodan je metodi generator.process() za postavljanje varijable okruženja kroz koju će generator obraditi unos.
  • Kada se navode nazivi ciljeva izgradnje koji su povezani s izvršnim datotekama, dopušteno je sufiksima kao što je "executable('foo', 'main.c', name_suffix: 'bar')" za generiranje dodatnih izvršnih datoteka u istom direktoriju.
  • Dodan je parametar “vs_module_defs” funkciji execuable() za korištenje def datoteke koja definira popis funkcija proslijeđenih shared_module().
  • Dodan parametar 'default_options' funkciji find_program() za postavljanje zadanih opcija za zamjenski potprojekt.
  • Dodana metoda fs.relative_to(), koja vraća relativni put za prvi argument, u odnosu na drugi, ako prvi put postoji. Na primjer, "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • Sljedeći parametar_symlinks dodan je funkcijama install_data(), install_headers() i install_subdir(); kada je postavljen, slijede simboličke veze.
  • Parametar "fill" dodan je metodi int.to_string() za inkrementalno popunjavanje niza vodećim nulama. Na primjer, pozivanje message(n.to_string(fill: 3)) za n=4 će proizvesti niz "004".
  • Dodan je novi cilj, clang-tidy-fix, koji navodi pokretanje uslužnog programa clang-tidy s oznakom "-fix".
  • Mogućnost određivanja sufiksa (TARGET_SUFFIX) cilja sklopa ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) dodana je naredbi za prevođenje.
  • Dodana je varijabla okoline MESON_PACKAGE_CACHE_DIR za nadjačavanje putanje do predmemorije paketa (podprojekti/packagecache), na primjer, omogućujući vam korištenje zajedničke predmemorije u nekoliko projekata.
  • Dodana naredba "meson setup --clearcache" za brisanje trajne predmemorije.
  • Podrška za ključnu riječ “required” dodana je svim metodama provjere kompilatora “has_*”, na primjer, umjesto “assert(cc.has_function('some_function'))” sada možete navesti “cc.has_function('some_function' , obavezno: istinito)”.
  • Nova ključna riječ, rust_abi, dodana je funkcijama shared_library(), static_library(), library() i shared_module(), koje bi se trebale koristiti umjesto zastarjele rust_crate_type.

Izvor: opennet.ru

Dodajte komentar