Meson bouwsysteem release 0.51

gepubliceerd systeemversie bouwen Meson 0.51, 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 geleverde 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 Ninja, 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 voortbouwen op Linux, macOS en Windows met behulp van GCC, Clang, Visual Studio en andere compilers wordt ondersteund. Het is mogelijk om projecten te bouwen in verschillende programmeertalen, waaronder C, C++, Fortran, Java en Rust. De incrementele bouwmodus wordt ondersteund, waarin alleen componenten die rechtstreeks verband houden met wijzigingen die zijn aangebracht sinds de laatste build, opnieuw worden opgebouwd. Meson kan worden gebruikt om herhaalbare builds te genereren, waarbij het uitvoeren van de build in verschillende omgevingen resulteert in het genereren van volledig identieke uitvoerbare bestanden.

De belangrijkste innovaties 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 toegevoegd voor de ICL-compiler (Intel C/C++ Compiler) voor het Windows-platform (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;
  • Generatoren hebben nu de mogelijkheid om aanvullende afhankelijkheden te specificeren met behulp van de optie “depends” (bijvoorbeeld generator(program_runner, output: [‘@[e-mail beveiligd]'], hangt af van: 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

Voeg een reactie