Versione del sistema di compilazione Meson 1.1

È stato rilasciato il sistema di build Meson 1.1.0, che viene utilizzato per creare progetti come X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME e GTK. Il codice di Meson è scritto in Python ed è concesso in licenza con la licenza Apache 2.0.

L'obiettivo principale dello sviluppo di Meson è fornire un'elevata velocità del processo di assemblaggio unita a praticità e facilità d'uso. Al posto dell'utilità make, durante la creazione viene utilizzato per impostazione predefinita il toolkit Ninja, ma è possibile utilizzare anche altri backend come xcode e VisualStudio. Il sistema dispone di un gestore di dipendenze multipiattaforma integrato che consente di utilizzare Meson per creare pacchetti per le distribuzioni. Le regole di assemblaggio sono specificate in un linguaggio semplificato specifico del dominio, sono altamente leggibili e comprensibili per l'utente (come previsto dagli autori, lo sviluppatore dovrebbe dedicare un minimo di tempo alla scrittura delle regole).

Supporta la compilazione incrociata e la creazione su Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS e Windows utilizzando GCC, Clang, Visual Studio e altri compilatori. È possibile realizzare progetti in vari linguaggi di programmazione, tra cui C, C++, Fortran, Java e Rust. È supportata la modalità di compilazione incrementale, in cui vengono ricostruiti solo i componenti direttamente correlati alle modifiche apportate dall'ultima compilazione. Meson può essere utilizzato per generare build ripetibili, in cui l'esecuzione della build in ambienti diversi determina la generazione di file eseguibili completamente identici.

Principali innovazioni di Meson 1.1:

  • Un nuovo argomento "oggetti:" è stato aggiunto a aware_dependency() per collegare gli oggetti direttamente agli eseguibili sotto forma di dipendenze interne che non richiedono l'uso di link_who.
  • Il comando "meson devenv -dump" ora ha la possibilità di specificare un file in cui scrivere le variabili di ambiente invece di stamparlo sullo standard output.
  • Aggiunti i metodi FeatureOption.enable_if e FeatureOption.disable_if per semplificare la creazione di condizionali in preparazione al passaggio dei parametri alla funzione dependency(). opt = get_option('funzione').disable_if(non foo, messaggio_errore: 'Impossibile abilitare la funzione quando anche foo non è abilitato') dep = dependency('foo', obbligatorio: opt)
  • È consentito passare oggetti generati come argomenti a "oggetti:".
  • La funzione progetto ora supporta l'installazione di file con informazioni sulle licenze del progetto.
  • L'esecuzione di "sudo meson install" garantisce che i privilegi vengano reimpostati durante le ricompilazioni per le piattaforme di destinazione.
  • Il comando "meson install" offre la possibilità di specificare un gestore separato per ottenere i diritti di root (ad esempio, puoi scegliere polkit, sudo, opendoas o $MESON_ROOT_CMD). L'esecuzione di "meson install" in modalità non interattiva non tenta più di aumentare i privilegi.
  • Aggiunto il supporto per leggere le opzioni dal file meson.options invece che da meson_options.txt.
  • Viene fornito il reindirizzamento delle informazioni sull'avanzamento dell'introspezione a stderr.
  • Aggiunto un nuovo backend "none" (--backend=none) per creare progetti che hanno solo regole di installazione e nessuna regola di compilazione.
  • Aggiunta una nuova dipendenza pybind11, consentendo a dependency('pybind11') di funzionare con pkg-config e cmake senza utilizzare lo script pybind11-config.
  • Le opzioni "--reconfigure" e "--wipe" sono consentite (meson setup --reconfigure builddir e meson setup --wipe builddir ) con una builddir vuota.
  • Aggiunto il supporto per la parola chiave dry_run a meson.add_install_script() per consentire l'esecuzione dei propri script di installazione quando si chiama "meson install --dry-run".

Fonte: opennet.ru

Aggiungi un commento