Meson build sistem izdanje 1.1

Objavljeno je izdanje Meson 1.1.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.1:

  • Novi argument "objects:" je dodan u declare_dependency() za pričvršćivanje objekata direktno na izvršne datoteke u obliku internih ovisnosti koje ne zahtijevaju korištenje link_who.
  • Komanda "meson devenv -dump" sada ima opciju specificiranja datoteke u koju će se pisati varijable okruženja umjesto da je ispisuje na standardni izlaz.
  • Dodane metode FeatureOption.enable_if i FeatureOption.disable_if kako bi se olakšalo kreiranje uvjeta u pripremi za prosljeđivanje parametara funkciji ovisnosti(). opt = get_option('feature').disable_if(ne foo, error_message: 'Ne mogu omogućiti funkciju kada foo također nije omogućen') dep = dependency('foo', obavezno : opt)
  • Dozvoljeno je prosljeđivanje generiranih objekata kao argumenata “objects:”.
  • Funkcija projekta sada podržava instalaciju datoteka s informacijama o projektnim licencama.
  • Pokretanje "sudo meson install" osigurava da se privilegije resetuju tokom rekonstrukcije za ciljne platforme.
  • Komanda "meson install" pruža mogućnost specificiranja zasebnog rukovatelja za dobivanje root prava (na primjer, možete odabrati polkit, sudo, opendoas ili $MESON_ROOT_CMD). Pokretanje "meson install" u neinteraktivnom načinu više ne pokušava eskalirati privilegije.
  • Dodata podrška za čitanje opcija iz datoteke meson.options umjesto meson_options.txt.
  • Osigurano je preusmjeravanje informacija o napretku introspekcije na stderr.
  • Dodan je novi "none" backend (--backend=none) za kreiranje projekata koji imaju samo pravila za instalaciju i bez pravila izgradnje.
  • Dodata je nova zavisnost pybind11, dozvoljavajući ovisnosti('pybind11') da radi sa pkg-config i cmake bez upotrebe skripte pybind11-config.
  • Opcije "--reconfigure" i "--wipe" su dozvoljene (meson setup --reconfigure builddir i meson setup --wipe builddir) sa praznim builddir.
  • Dodata podrška za dry_run ključnu riječ meson.add_install_script() kako bi se omogućilo pokretanje vaših vlastitih instalacionih skripti prilikom pozivanja "meson install --dry-run".

izvor: opennet.ru

Dodajte komentar