Meson build sistem izdanje 1.3

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

Ključni razvojni cilj Meson-a je da obezbedi visoku brzinu procesa montaže u kombinaciji sa praktičnošću i lakoćom upotrebe. Umjesto make, build koristi Ninja komplet alata prema zadanim postavkama, ali se mogu koristiti i drugi backendovi 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 postavljena na pojednostavljenom jeziku specifičnom za domenu, dobro su čitljiva i razumljiva korisniku (prema ideji autora, programer bi trebao potrošiti minimum vremena na pisanje pravila).

Podržano je unakrsno kompajliranje 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 graditi 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 ponovo izgrađuju samo komponente koje su direktno povezane s promjenama napravljenim od posljednje izgradnje. Meson se može koristiti za generiranje ponovljivih build-ova, pri čemu pokretanje build-a u različitim okruženjima rezultira potpuno identičnim izvršnim programima.

Glavne inovacije Meson 1.3:

  • Dodata opcija “werror: true” metodama provjere kompajlera compiler.compiles(), compiler.links() i compiler.run(), koja tretira upozorenja kompajlera kao greške (može se koristiti za provjeru da je kod napravljen bez upozorenja ).
  • Dodana metoda has_define za provjeru definicije simbola od strane pretprocesora.
  • Parametar macro_name je dodat funkciji configure_file(), dodajući makro zaštitu za dvostruke veze putem “#include” (“include guards”), dizajniranog u stilu makronaredbi u jeziku C (pojednostavljavajući kreiranje konfiguracijskih datoteka sa dinamičkim imena makroa).
  • Novi izlazni format je dodan u configure_file() - JSON ("output_format: json").
  • Dodata mogućnost korištenja lista vrijednosti za c_std i cpp_std parametre (na primjer, „default_options: 'c_std=gnu11,c11′’).
  • U modulima koji koriste CustomTarget za obradu datoteka, dodana je mogućnost prilagođavanja izlaznih poruka pomoću ninja uslužnog programa.
  • build_target "jar" je zastario i umjesto toga se preporučuje poziv "jar()".
  • Parametar 'env' je dodan metodi generator.process() da bi se postavila varijabla okruženja kroz koju će generator obraditi ulaz.
  • Kada se specificiraju nazivi ciljeva izgradnje povezanih s izvršnim datotekama, sufiksi kao što su "executable('foo', 'main.c', name_suffix: 'bar')" smiju generirati dodatne izvršne datoteke u istom direktoriju.
  • Dodan parametar “vs_module_defs” funkciji execuable() za korištenje def datoteke koja definira listu funkcija proslijeđenih shared_module().
  • Dodan parametar 'default_options' funkciji find_program() za postavljanje zadanih opcija za rezervni potprojekat.
  • Dodata metoda fs.relative_to(), koja vraća relativnu putanju za prvi argument, u odnosu na drugi, ako postoji prva staza. Na primjer, "fs.relative_to('/prefix/lib', '/prefix/bin') == '../lib')".
  • Sljedeći parametar_symlinks je dodan funkcijama install_data(), install_headers() i install_subdir(); kada je postavljen, prate se simbolične veze.
  • Parametar “fill” je dodat metodi int.to_string() za postepeno popunjavanje niza vodećim nulama. Na primjer, pozivanje poruke(n.to_string(fill: 3)) za n=4 će proizvesti niz "004".
  • Dodan je novi cilj, clang-tidy-fix, koji specificira pokretanje uslužnog programa clang-tidy sa zastavicom "-fix".
  • Mogućnost specificiranja sufiksa (TARGET_SUFFIX) cilja sklopa ([PATH_TO_TARGET/]TARGET_NAME.TARGET_SUFFIX[:TARGET_TYPE]) je dodana naredbi kompajliranja.
  • Dodata varijabla okruženja MESON_PACKAGE_CACHE_DIR kako bi se nadjačala putanja do keša paketa (podprojekti/keš memorije paketa), na primjer, omogućavajući vam da koristite dijeljenu keš memoriju u nekoliko projekata.
  • Dodata naredba "meson setup --clearcache" za brisanje trajnog keša.
  • Podrška za "potrebnu" ključnu riječ je dodana svim metodama provjere kompajlera "has_*", na primjer, umjesto "assert(cc.has_function('some_function'))" sada možete specificirati "cc.has_function('some_function' , obavezno: tačno)”.
  • Nova ključna riječ, rust_abi, dodana je funkcijama shared_library(), static_library(), library() i shared_module(), koje treba koristiti umjesto zastarjele rust_crate_type.

izvor: opennet.ru

Dodajte komentar