
Meson to narzędzie programowe do automatyzacji budowy oprogramowania. Jest darmowy i open source napisany w Pythonie.
Zostało to niedawno ogłoszone wydanie nowej wersji systemu budowania Meson 1.4, wersja zawierająca ulepszenia obsługi niektórych funkcji modułu FS, a także ulepszenia kompatybilności, nowe funkcje i nie tylko.
Dla tych, którzy nie wiedzą o Mesonie, powinniście wiedzieć, że jest to system kompilacji używany przez znane projekty, takie jak X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME i GTK. Jego głównym celem jest zapewnienie szybkiego i łatwego w obsłudze procesu kompilacji. Domyślnie korzysta z zestawu narzędzi Ninja, ale obsługuje także inne backendy, takie jak xcode i VisualStudio.
Ten system ma wbudowaną wieloplatformową procedurę obsługi zależności co ułatwia tworzenie pakietów dla dystrybucji. Zasady kompilacji są określone w konkretnym, czytelnym języku, co minimalizuje czas potrzebny na ich napisanie.
Meson obsługuje projekty budowania w wielu językach, takich jak C, C++, Fortran, Java i Rust, i oferuje tryb kompilacji przyrostowej, który przebudowuje tylko komponenty, na które miały wpływ zmiany od czasu ostatniej kompilacji. Dodatkowo Meson może generować powtarzalne kompilacje, zapewniając, że uruchamianie kompilacji w różnych środowiskach daje całkowicie identyczne pliki wykonywalne.
Główne nowości Mesona 1.4
W tej nowej wersji Mesona 1.4, dodana obsługa modułu FS, które teraz obsługuje obiekty docelowe build_tgt i custom_tgt, jak również indeks docelowy kompilacji (custom_idx) w funkcjach fs.name, fs.parent, fs.replace_suffix i fs.stem.
Kolejną zmianą wyróżniającą się w tej nowej wersji jest to, że Meson ma teraz możliwość odczytania wersji projektu z podprojektów opartych na CMake. Umożliwia to prawidłowe sprawdzenie ograniczeń wersji podczas wywoływania podprojektu cmake
Ponadto, teraz w pracachs kompilacja_ui, kompilacja_moc i wstępne przetwarzanie modułów qt4, qt5 i qt6, dodano argument zachowywania_ścieżek aby wybrać opcję budowy struktury katalogów dla zapisywanych plików.
Warto również zauważyć, że do stldebug dodano obsługę Clang, gdy włączono debugstl, wprowadzono metodę unset() do obiektu env, a do obiektu File dodano metodę full_path() w celu uzyskania pełnej ścieżki do pliku.
Dodany obsługa narzędzia numpy-config i obsługa pkg-config jako nowych zależności spersonalizowane. Jest to dostępne od wersji NumPy 2.0.0. Obsługa numpy-config będzie działać automatycznie po zainstalowaniu NumPy. Z drugiej strony plik pkg-config znajduje się w pakietach witryny Pythona, co oznacza, że nie można go używać od razu po wyjęciu z pudełka bez ustawienia PKG_CONFIG_PATH.
Z innych zmian które wyróżniają się na tle nowej wersji:
- Możliwość kontrolowania sprawdzania asercji (GLIBCXX_ASSERTIONS) w C++ stdlib poprzez konfigurację ndebug.
- Dodano argument słowa kluczowego keep_pathsun do funkcji modułu qt
- Możliwe jest teraz określenie zależnych celów za pomocą zależności: dla kompilatora.preprocess(). Cele te muszą zostać skonstruowane przed rozpoczęciem przetwarzania wstępnego.
- Generator powiązań bindgen obsługuje teraz heurystykę Mesona do określania plików nagłówkowych C++.
- Dodano możliwość zastąpienia ustawień językowych dla bindgen.
- Testy domyślnie kończą się niepowodzeniem po napotkaniu błędów podczas uruchamiania środków dezynfekujących, takich jak MemorySanitizer.
- Dodano obsługę kompilatora C/C++ firmy Texas Instruments dla rodziny procesorów C6000.
Wreszcie, jeśli chcesz dowiedzieć się więcej na ten temat, możesz zapoznać się ze szczegółami w następujący link.
Jak zainstalować Mesona na Linuksie?
Ci, którzy są zainteresowani możliwością zainstalowania tego systemu kompilacji w swoim systemie, mogą to zrobić, postępując zgodnie z instrukcjami, które udostępniamy poniżej.
Powinni wiedzieć, że Meson jest dostępny na PyPi, więc można go zainstalować za pomocą polecenia:
pip3 install meson
Uwaga: powinieneś wiedzieć, że dokładne polecenie, które należy wpisać, aby zainstalować pip, może się różnić w zależności od systemu, dlatego zaleca się używanie pip w wersji Python 3.