È stato rilasciato CMake 3.21, un generatore di script di build open-source e multiplatform, che funge da alternativa ad Autotools e viene utilizzato in progetti come KDE, LLVM/Clang, MySQL, MariaDB, ReactOS e Blender. Il codice di CMake è scritto in C++ ed è distribuito con licenza BSD.
CMake è noto per fornire un semplice linguaggio di scripting, estensibilità delle funzionalità tramite moduli, un numero minimo di dipendenze (senza legami con M4, Perl o Python), supporto per il caching, strumenti per la cross-compilazione, generazione di file di build per una vasta gamma di sistemi di build e compilatori, utility ctest e cpack per definire script di test e di packaging, e l'utility cmake-gui per la configurazione interattiva delle impostazioni di build.
Miglioramenti principali:
- È stato aggiunto il supporto completo per il linguaggio di programmazione HIP (Heterogeneous-Computing Interface for Portability), un dialetto di C++ progettato per semplificare la conversione delle applicazioni CUDA in codice C++ portabile.
- Aggiunto il generatore di script di build per Visual Studio 17 2022, basato sulla versione preliminare Visual Studio 2022 Preview 1.1.
- Nei generatori di script di build Makefile e Ninja sono state aggiunte le proprietà C_LINKER_LAUNCHER e CXX_LINKER_LAUNCHER, che consentono di avviare utility ausiliarie, come analizzatori statici, che eseguono il linkaggio. Il generatore avvierà le utility specificate, passando il nome del linker e i relativi argomenti.
- Nelle proprietà 'C_STANDARD' e 'OBJC_STANDARD', così come negli strumenti per configurare le opzioni del compilatore (Compile Features), è stato aggiunto il supporto per le specifiche C17 e C23.
- Nell'utility cmake è stata aggiunta l'opzione «—toolchain » per specificare il percorso per l'architettura.
- È stata implementata l'evidenziazione dei tipi di messaggi visualizzati nel terminale.
- Aggiunta la compatibilità con il compilatore Fujitsu.
- All'interno del comando «foreach()» è stata garantita l'isolamento delle variabili del ciclo.
Inoltre, si segnala il rilascio del sistema di build Meson 0.59, utilizzato per la compilazione di progetti come X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME e GTK. Il codice di Meson è scritto in Python e distribuito sotto la licenza Apache 2.0. Supporta la cross-compilazione e la costruzione su Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS e Windows, utilizzando GCC, Clang, Visual Studio e altri compilatori. È possibile compilare progetti in vari linguaggi di programmazione, tra cui C, C++, Fortran, Java e Rust. Invece dell'utility make, per la compilazione viene utilizzato di default l'ambiente Ninja, ma è possibile utilizzare anche altri backend come xcode e VisualStudio.
Il sistema include un gestore delle dipendenze multipiattaforma che consente di utilizzare Meson per compilare pacchetti per le distribuzioni. Le regole di compilazione sono definite in un linguaggio semplificato orientato agli oggetti, che si distingue per una buona leggibilità e risulta comprensibile per l'utente (secondo l'intento degli autori, lo sviluppatore dovrebbe dedicare il minor tempo possibile alla scrittura delle regole). È supportata la modalità di compilazione incrementale, in cui vengono ricompilati solo i componenti direttamente correlati alle modifiche apportate dall'ultima compilazione. Meson può essere utilizzato per creare compilazioni ripetibili, in cui l'esecuzione della compilazione in ambienti diversi genera file eseguibili completamente identici.
Novità principali di Meson 0.59:
- Aggiunta la supporto per il linguaggio Cython (una versione estesa di Python, destinata a semplificare l'integrazione con il codice in linguaggio C).
- Aggiunti le parole chiave «unescaped_variables» e «unescaped_uninstalled_variables» per definire variabili in pkgconfig senza la necessità di eseguire il backslash per gli spazi.
- Aggiunta la supporto per wrc (Wine Resource Compiler).
- Implementata la possibilità di generare progetti per Visual Studio 2012 e Visual Studio 2013.
- Tutte le operazioni relative alla gestione dei sottoprogetti ora avviano per impostazione predefinita ogni sottoprogetto in parallelo. Il numero di processi in esecuzione simultanea è determinato dal parametro «—num-processes».
Fonte: opennet.ru
