Kluczowym celem rozwoju Mesona jest zapewnienie dużej szybkości procesu montażu w połączeniu z wygodą i łatwością obsługi. Zamiast narzędzia make domyślna kompilacja korzysta z zestawu narzędzi
Obsługiwana jest kompilacja krzyżowa i budowanie na systemach Linux, 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, m.in. C, C++, Fortran, Java i Rust. Obsługiwany jest tryb kompilacji przyrostowej, w którym odbudowywane są tylko komponenty bezpośrednio związane ze zmianami wprowadzonymi od czasu ostatniej kompilacji. Meson można wykorzystać do generowania powtarzalnych kompilacji, w których uruchomienie kompilacji w różnych środowiskach skutkuje wygenerowaniem całkowicie identycznych plików wykonywalnych.
Głównym
- Dodano obsługę przejrzystego tworzenia istniejących projektów korzystających ze skryptów kompilacji CMake. Meson może teraz bezpośrednio budować proste podprojekty (takie jak pojedyncze biblioteki) przy użyciu modułu CMake, podobnie jak w przypadku standardowych podprojektów (w tym podprojekty CMake można umieszczać w katalogu podprojektów);
- W przypadku wszystkich używanych kompilatorów wstępne testy obejmują montaż i wykonanie prostych plików testowych (sprawdzanie poprawności), nie ograniczając się do testowania flag określonych przez użytkownika dla kompilatorów krzyżowych (od teraz sprawdzane są również kompilatory natywne dla bieżącej platformy) .
- Dodano możliwość definiowania opcji wiersza poleceń używanych podczas kompilacji krzyżowej, z powiązaniem poprzez określenie przedrostka platformy przed opcją. Poprzednio opcje wiersza poleceń dotyczyły tylko kompilacji natywnych i nie można było ich określić na potrzeby kompilacji krzyżowej. Opcje wiersza poleceń mają teraz zastosowanie niezależnie od tego, czy budujesz natywnie, czy kompilując krzyżowo, zapewniając, że kompilacje natywne i kompilacje krzyżowe dają identyczne wyniki;
- Dodano możliwość określenia flagi „--cross-file” więcej niż raz w wierszu poleceń, aby wyświetlić wiele plików krzyżowych;
- Dodano obsługę kompilatora ICL (Intel C/C++ Compiler) dla platformy Windows (ICL.EXE i ifort);
- Dodano wstępną obsługę zestawu narzędzi dla CPU Xtensa (xt-xcc, xt-xc++, xt-nm);
- Do obiektu „zależność” dodana została metoda „get_variable”, która umożliwia pobranie wartości zmiennej bez uwzględnienia rodzaju aktualnej zależności (np. dep.get_variable(pkg-config : 'var- nazwa”, cmake: „COP_VAR_NAME));
- Dodano nowy argument opcji zestawu docelowego „link_language”, aby jawnie określić język używany podczas wywoływania konsolidatora. Na przykład główny program w języku Fortran mógłby wywołać kod C/C++, który automatycznie wybrałby C/C++, gdy powinien zostać użyty linker Fortran;
- Zmieniono obsługę flag preprocesora CPPFLAGS. Podczas gdy Meson wcześniej przechowywał osobno CPPFLAGS i flagi kompilacji specyficzne dla języka (CFLAGS, CXXFLAGS), teraz są one przetwarzane nierozłącznie, a flagi wymienione w CPPFLAGS są używane jako kolejne źródło flag kompilacji dla języków, które je obsługują;
- Dane wyjściowe funkcji niestandardowe_target i niestandardowe_target[i] mogą być teraz używane jako argumenty w operacjach link_with i link_whole;
- Generatory mają teraz możliwość określenia dodatkowych zależności za pomocą opcji „zależy” (na przykład generator(program_runner, wyjście: ['@[email chroniony]'], zależy: exe));
- Dodano opcję statyczną do find_library, aby umożliwić wyszukiwanie obejmujące tylko biblioteki połączone statycznie;
- Dla python.find_installation dodano możliwość określenia obecności danego modułu Pythona dla konkretnej wersji Pythona;
- Dodano nowy moduł niestabilny-kconfig do analizowania plików kconfig;
- Dodano nowe polecenie „subprojects foreach”, które pobiera polecenie z argumentami i uruchamia je we wszystkich katalogach podprojektów;
Źródło: opennet.ru