Versione del sistema di compilazione Meson 0.52

pubblicato creare la versione del sistema Tavolo 0.52, che viene utilizzato per creare progetti come X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME e GTK+. Il codice Meson è scritto in Python e in dotazione concesso in licenza con 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. Invece dell'utilità make, la build predefinita utilizza il toolkit Ninja, ma è anche possibile utilizzare 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).

Supportato eseguire la compilazione incrociata e creare 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.

Il principale innovazioni Mesone 0.52:

  • Aggiunto supporto sperimentale per Webassembly utilizzando Emscripten come compilatore;
  • Il supporto per le piattaforme Illumos e Solaris è stato notevolmente migliorato e reso funzionante;
  • È possibile ignorare gli script di internazionalizzazione basati su gettext se nel sistema non sono installati gli strumenti gettext (in precedenza veniva visualizzato un errore quando si utilizzava il modulo i18n su sistemi senza gettext);
  • Supporto migliorato per le librerie statiche. Sono stati risolti molti problemi legati all'utilizzo delle librerie statiche disinstallate;
  • Aggiunta la possibilità di utilizzare dizionari per assegnare variabili di ambiente. Quando si chiama Environment(), il primo elemento può ora essere specificato come un dizionario in cui le variabili di ambiente sono definite in forma chiave/valore. Queste variabili verranno trasferite a Environment_object come se fossero impostate individualmente tramite il metodo set(). I dizionari ora possono anche essere passati a varie funzioni che supportano un argomento "env";
  • Aggiunta la funzione "runtarget alias_target(target_name, dep1, ...)" che crea un nuovo target di build di primo livello che può essere chiamato con il backend di build selezionato (ad esempio "ninja target_name"). Questo target di compilazione non esegue alcun comando, ma garantisce che tutte le dipendenze vengano create;
  • Abilitata l'impostazione automatica della variabile d'ambiente PKG_CONFIG_SYSROOT_DIR durante la compilazione incrociata se è presente un'impostazione sys_root nella sezione “[properties]”;
  • Aggiunta l'opzione "--gdb-path" per determinare il percorso del debugger GDB quando si specifica l'opzione "--gdb testname" per eseguire GDB con lo script di test specificato;
  • Aggiunto rilevamento automatico del target di build clang-tidy per eseguire questo linter con tutti i file sorgente. Il target viene creato se clang-tidy è disponibile nel sistema e il file “.clang-tidy” (o “_clang-tidy”) è definito nella root del progetto;
  • Aggiunta dipendenza('blocchi') da utilizzare nell'estensione Clang Blocchi;
  • Le visualizzazioni del linker e del compilatore sono separate, consentendo l'utilizzo di diverse combinazioni di compilatori e linker;
  • Aggiunto il metodo all_dependencies() agli oggetti SourceSet oltre al metodo all_sources();
  • In run_project_tests.py, l'opzione “--only” è stata aggiunta per eseguire test selettivamente (ad esempio, “python run_project_tests.py —only fortran python3”);
  • La funzione find_program() ora ha la capacità di cercare solo le versioni richieste di un programma (la versione viene determinata eseguendo il programma con l'opzione “-version”);
  • Per controllare l'esportazione dei simboli, è stata aggiunta l'opzione vs_module_defs alla funzione shared_module(), simile a shared_library();
  • Il modulo kconfig è stato espanso per supportare configure_file() per specificare un file di input;
  • Aggiunta la possibilità di specificare più file di input per i gestori “command:” a configure_file();
  • Il comando “dist” per la creazione di un archivio è stato spostato nella categoria dei comandi di primo livello (in precedenza il comando era legato a ninja). Aggiunta l'opzione "--formats" per definire i tipi di archivi da creare (ad esempio,
    "meson dist -formats=xztar,zip").

Fonte: opennet.ru

Aggiungi un commento