systeemversie bouwen , dat wordt gebruikt om projecten te bouwen zoals X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME en GTK+. Meson-code is geschreven in Python en gelicentieerd onder Apache 2.0.
Het belangrijkste doel van de ontwikkeling van Meson is het bieden van een hoge snelheid van het assemblageproces, gecombineerd met gemak en gebruiksgemak. In plaats van het make-hulpprogramma gebruikt de standaardbuild de toolkit , maar het is ook mogelijk om andere backends te gebruiken, zoals xcode en VisualStudio. Het systeem heeft een ingebouwde afhankelijkheidshandler voor meerdere platforms waarmee u Meson kunt gebruiken om pakketten voor distributies te bouwen. De montageregels zijn gespecificeerd in een vereenvoudigde domeinspecifieke taal, zijn zeer leesbaar en begrijpelijk voor de gebruiker (zoals bedoeld door de auteurs, moet de ontwikkelaar een minimum aan tijd besteden aan het schrijven van regels).
Cross-compilatie en assembly worden ondersteund. Linux, macOS и Windows Met behulp van GCC, Clang, Visual Studio en andere compilers. Projecten kunnen worden gebouwd in verschillende programmeertalen, waaronder C, C++, Fortran, Java en Rust. De incrementele bouwmodus wordt ondersteund, waarbij alleen componenten opnieuw worden gebouwd die direct verband houden met wijzigingen sinds de vorige build. Meson kan worden gebruikt om herhaalbare builds te maken, waarbij het uitvoeren van de build in verschillende omgevingen resulteert in het genereren van volledig identieke uitvoerbare bestanden.
De belangrijkste Meson 0.51:
- Ondersteuning toegevoegd voor het transparant bouwen van bestaande projecten die CMake-buildscripts gebruiken. Meson kan nu direct eenvoudige subprojecten bouwen (zoals enkele bibliotheken) met behulp van de CMake-module, vergelijkbaar met standaard subprojecten (inclusief CMake-subprojecten kunnen in de map subprojecten worden geplaatst);
- Voor alle gebruikte compilers zijn voorafgaande tests inbegrepen door het samenstellen en uitvoeren van eenvoudige testbestanden (sanity check), niet beperkt tot het testen van door de gebruiker opgegeven vlaggen voor cross-compilers (vanaf nu worden compilers die eigen zijn aan het huidige platform ook gecontroleerd) .
- De mogelijkheid toegevoegd om opdrachtregelopties te definiëren die worden gebruikt tijdens cross-compilatie, met binding door een platformvoorvoegsel vóór de optie op te geven. Voorheen hadden opdrachtregelopties alleen betrekking op native builds en konden ze niet worden opgegeven voor kruiscompilatie. Commandoregelopties zijn nu van toepassing, ongeacht of u native of cross-compileert, zodat native en cross-builds identieke resultaten opleveren;
- De mogelijkheid toegevoegd om de vlag “--cross-file” meerdere keren op de opdrachtregel te specificeren om meerdere kruisbestanden weer te geven;
- Ondersteuning voor de ICL-compiler (Intel C/C++ Compiler) is toegevoegd aan het platform. Windows (ICL.EXE en ifort);
- Initiële toolkit-ondersteuning toegevoegd voor CPU Xtensa (xt-xcc, xt-xc++, xt-nm);
- De methode “get_variable” is toegevoegd aan het object “dependency”, waarmee u de waarde van een variabele kunt verkrijgen zonder rekening te houden met het type van de huidige afhankelijkheid (bijvoorbeeld dep.get_variable(pkg-config : 'var- naam', cmake: 'COP_VAR_NAME));
- Er is een nieuw argument voor doelassemblageopties toegevoegd, "link_taal", om expliciet de taal op te geven die wordt gebruikt bij het aanroepen van de linker. Een belangrijk Fortran-programma zou bijvoorbeeld C/C++-code kunnen aanroepen, die automatisch C/C++ zou selecteren wanneer de Fortran-linker zou moeten worden gebruikt;
- De verwerking van CPPFLAGS-preprocessorvlaggen is gewijzigd. Terwijl Meson eerder CPPFLAGS en taalspecifieke compilatievlaggen (CFLAGS, CXXFLAGS) afzonderlijk opsloeg, worden ze nu onafscheidelijk verwerkt en worden de vlaggen vermeld in CPPFLAGS gebruikt als een andere bron van compilatievlaggen voor talen die ze ondersteunen;
- De uitvoer van custom_target en custom_target[i] kan nu worden gebruikt als argumenten in de link_with- en link_whole-bewerkingen;
- In generatoren is de mogelijkheid toegevoegd om extra afhankelijkheden op te geven met behulp van de optie "depends" (bijvoorbeeld generator(program_runner, output: ['@BASENAME@.c'], depends: exe));
- Een statische optie toegevoegd aan find_library, zodat de zoekopdracht alleen statisch gekoppelde bibliotheken omvat;
- Voor python.find_installation is de mogelijkheid toegevoegd om de aanwezigheid van een bepaalde Python-module voor een specifieke versie van Python te bepalen;
- Nieuwe module instabiel-kconfig toegevoegd voor het parseren van kconfig-bestanden;
- Een nieuwe opdracht “subprojects foreach” toegevoegd, die een opdracht met argumenten overneemt en deze in alle subprojectmappen uitvoert;
Bron: opennet.ru
