Meson bouwsysteem release 1.0

De release van het Meson 1.0.0 build-systeem is gepubliceerd, dat wordt gebruikt om projecten te bouwen zoals X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME en GTK. De Meson-code is geschreven in Python en valt onder de Apache 2.0-licentie.

Het belangrijkste ontwikkelingsdoel van Meson is om een ​​snel assemblageproces te bieden in combinatie met gemak en gebruiksgemak. In plaats van make gebruikt de build standaard de Ninja-toolkit, maar ook andere backends zoals xcode en VisualStudio kunnen worden gebruikt. Het systeem heeft een ingebouwde multi-platform afhankelijkheidshandler waarmee u Meson kunt gebruiken om pakketten voor distributies te bouwen. Assemblageregels zijn opgesteld in een vereenvoudigde domeinspecifieke taal, ze zijn goed leesbaar en begrijpelijk voor de gebruiker (volgens het idee van de auteurs zou de ontwikkelaar een minimum aan tijd moeten besteden aan het schrijven van regels).

Cross-compileren en bouwen op Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, 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. Er wordt een incrementele bouwmodus ondersteund, waarin alleen componenten worden herbouwd die rechtstreeks verband houden met wijzigingen die zijn aangebracht sinds de laatste bouw. Meson kan worden gebruikt om herhaalbare builds te genereren, waarbij het uitvoeren van de build in verschillende omgevingen resulteert in volledig identieke uitvoerbare bestanden.

Belangrijkste innovaties van Meson 1.0:

  • De module voor bouwprojecten in de Rust-taal is stabiel verklaard. Deze module wordt in het Mesa-project gebruikt om componenten te bouwen die in Rust zijn geschreven.
  • De prefix-optie wordt ondersteund door de meeste compilercontrolefuncties en implementeert de mogelijkheid om andere arrays dan strings te verwerken. U kunt nu bijvoorbeeld het volgende opgeven: cc.check_header('GL/wglew.h', prefix: ['#include ', '#erbij betrekken '])
  • Er is een nieuw argument "--workdir" toegevoegd waarmee u de werkmap kunt overschrijven. Om bijvoorbeeld de huidige map te gebruiken in plaats van de werkmap, kunt u het volgende uitvoeren: meson devenv -C builddir --workdir .
  • Er worden nieuwe operatoren "in" en "niet in" voorgesteld om het voorkomen van een substring in een string te bepalen, vergelijkbaar met de eerder beschikbare controle op het voorkomen van een element in een array of woordenboek. Bijvoorbeeld: fs = import('fs') if 'iets' in fs.read('somefile') # True endif
  • Optie "warning-level=alles" toegevoegd om de uitvoer van alle beschikbare compilerwaarschuwingen in te schakelen (in clang en MSVC gebruikt -Weverything en /Wall, en in GCC zijn afzonderlijke waarschuwingen opgenomen, die grofweg overeenkomen met de -Weverything-modus in clang).
  • De methode rust.bindgen implementeert de mogelijkheid om het argument "dependencies" te verwerken om paden door te geven aan afhankelijkheden die door de compiler moeten worden verwerkt.
  • De functie java.generate_native_headers is verouderd en hernoemd naar java.native_headers om overeen te komen met de algemene naamgevingsstijl van Meson.

Bron: opennet.ru

Voeg een reactie