Wersja systemu kompilacji Meson 1.1

Opublikowano wydanie systemu kompilacji Meson 1.1.0, który służy do budowania projektów takich jak X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME i GTK. Kod Mesona jest napisany w Pythonie i jest licencjonowany na licencji Apache 2.0.

Kluczowym celem rozwojowym Mesona jest zapewnienie szybkiego procesu montażu połączonego z wygodą i łatwością użytkowania. Zamiast make kompilacja domyślnie korzysta z zestawu narzędzi Ninja, ale można również użyć innych backendów, takich jak xcode i VisualStudio. System ma wbudowany wieloplatformowy moduł obsługi zależności, który pozwala używać Mesona do budowania pakietów dla dystrybucji. Reguły asemblera są sformułowane w uproszczonym, specyficznym dla domeny języku, są dobrze czytelne i zrozumiałe dla użytkownika (według pomysłu autorów programista powinien poświęcić minimum czasu na napisanie reguł).

Obsługiwana jest kompilacja krzyżowa i budowanie w systemach Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS i Windows przy użyciu GCC, Clang, Visual Studio i innych kompilatorów. Możliwe jest budowanie projektów w różnych językach programowania, w tym C, C++, Fortran, Java i Rust. Obsługiwany jest tryb budowania przyrostowego, w którym odbudowywane są tylko komponenty, które są bezpośrednio związane ze zmianami wprowadzonymi od czasu ostatniej kompilacji. Meson może być używany do generowania powtarzalnych kompilacji, gdzie uruchamianie kompilacji w różnych środowiskach skutkuje całkowicie identycznymi plikami wykonywalnymi.

Główne innowacje Mesona 1.1:

  • Nowy argument „obiekty:” został dodany do funkcji Declaration_dependency() w celu dołączania obiektów bezpośrednio do plików wykonywalnych jako wewnętrznych zależności, które nie wymagają link_who.
  • Polecenie „meson devenv --dump” ma opcjonalną możliwość określenia pliku, w którym mają być zapisywane zmienne środowiskowe, zamiast wysyłania do standardowego strumienia wyjściowego.
  • Dodano metody FeatureOption.enable_if i FeatureOption.disable_if, aby ułatwić tworzenie warunków w ramach przygotowań do przekazywania parametrów do funkcji Dependency(). opt = get_option('feature').disable_if(not foo, error_message : 'Nie można włączyć funkcji, gdy foo nie jest również włączone') dep = dependency('foo', wymagane: opt)
  • Dozwolone jest przekazywanie wygenerowanych obiektów wśród argumentów "objects:".
  • Funkcja projektu obsługuje instalację plików z informacjami o licencjach projektu.
  • Wykonanie „sudo meson install” zapewnia zresetowanie uprawnień podczas przebudowy dla platform docelowych.
  • Polecenie „meson install” zapewnia możliwość określenia oddzielnego modułu obsługi w celu uzyskania uprawnień roota (na przykład można wybrać polkit, sudo, opendoas lub $MESON_ROOT_CMD). Uruchamianie „meson install” w trybie nieinteraktywnym nie próbuje już podnosić uprawnień.
  • Dodano obsługę odczytu opcji z pliku meson.options zamiast meson_options.txt.
  • Zapewniono przekierowanie do stderr wyjścia informacji o postępie introspekcji.
  • Dodano nowy backend „none” (--backend=none), aby tworzyć projekty, które mają tylko reguły instalacji i nie mają reguł kompilacji.
  • Dodano nową zależność pybind11, aby zależność('pybind11') działała z pkg-config i cmake bez użycia skryptu pybind11-config.
  • Opcje "--reconfigure" i "--wipe" (meson setup --reconfigure builddir i meson setup --wipe builddir ) są dozwolone z pustym builddir.
  • meson.add_install_script() dodał obsługę słowa kluczowego dry_run, które umożliwia uruchamianie własnych skryptów instalacyjnych podczas wywoływania „meson install --dry-run”.

Źródło: opennet.ru

Dodaj komentarz