Versione del sistema di compilazione Meson 0.51

pubblicato creare la versione del sistema Tavolo 0.51, 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).

È supportata la compilazione incrociata e la creazione su Linux, 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.51:

  • Aggiunto supporto per la creazione trasparente di progetti esistenti che utilizzano script di compilazione CMake. Meson ora può creare direttamente sottoprogetti semplici (come singole librerie) utilizzando il modulo CMake, simile ai sottoprogetti standard (inclusi i sottoprogetti CMake possono essere inseriti nella directory dei sottoprogetti);
  • Per tutti i compilatori utilizzati, è previsto il test preliminare attraverso l'assemblaggio e l'esecuzione di semplici file di test (controllo di integrità), non limitato al test dei flag specificati dall'utente per i compilatori incrociati (d'ora in poi verranno controllati anche i compilatori nativi della piattaforma attuale) .
  • Aggiunta la possibilità di definire le opzioni della riga di comando utilizzate durante la compilazione incrociata, con associazione specificando un prefisso della piattaforma prima dell'opzione. In precedenza, le opzioni della riga di comando coprivano solo le build native e non potevano essere specificate per la compilazione incrociata. Le opzioni della riga di comando ora si applicano indipendentemente dal fatto che si stia compilando in modo nativo o tramite compilazione incrociata, garantendo che le build native e incrociate producano risultati identici;
  • Aggiunta la possibilità di specificare il flag "--cross-file" più di una volta sulla riga di comando per elencare più file incrociati;
  • Aggiunto il supporto per il compilatore ICL (Intel C/C++ Compiler) per la piattaforma Windows (ICL.EXE e ifort);
  • Aggiunto il supporto iniziale del toolkit per CPU Xtensa (xt-xcc, xt-xc++, xt-nm);
  • All'oggetto “dependency” è stato aggiunto il metodo “get_variable” che permette di ottenere il valore di una variabile senza tenere conto del tipo di dipendenza corrente (ad esempio dep.get_variable(pkg-config : 'var- nome', cmake : 'COP_VAR_NAME));
  • Aggiunto un nuovo argomento delle opzioni dell'assembly di destinazione, "link_lingual", per specificare in modo esplicito la lingua utilizzata quando si chiama il linker. Ad esempio, un programma Fortran principale potrebbe chiamare codice C/C++, che selezionerebbe automaticamente C/C++ quando dovrebbe essere utilizzato il linker Fortran;
  • La gestione dei flag del preprocessore CPPFLAGS è stata modificata. Mentre Meson in precedenza memorizzava CPPFLAGS e flag di compilazione specifici della lingua (CFLAGS, CXXFLAGS) separatamente, ora vengono elaborati inseparabilmente e i flag elencati in CPPFLAGS vengono utilizzati come un'altra fonte di flag di compilazione per le lingue che li supportano;
  • L'output di custom_target e custom_target[i] ora può essere utilizzato come argomenti nelle operazioni link_with e link_whole;
  • I generatori ora hanno la possibilità di specificare dipendenze aggiuntive utilizzando l'opzione "depends" (ad esempio, generator(program_runner, output: ['@[email protected]'], dipende: exe));
  • Aggiunta un'opzione statica a find_library per consentire alla ricerca di includere solo librerie collegate staticamente;
  • Per python.find_installation è stata aggiunta la possibilità di determinare la presenza di un determinato modulo Python per una specifica versione di Python;
  • Aggiunto nuovo modulo unstable-kconfig per l'analisi dei file kconfig;
  • Aggiunto un nuovo comando “sottoprogetti foreach”, che prende un comando con argomenti e lo esegue in tutte le directory dei sottoprogetti;

Fonte: opennet.ru

Aggiungi un commento