rilascio di un generatore di script di build open-source e multipiattaforma , che funge da alternativa ad Autotools e utilizzato in progetti come KDE, LLVM/Clang, MySQL, MariaDB, ReactOS e Blender. Il codice di CMake è scritto in C++ e distribuito con licenza BSD.
CMake è noto per fornire un semplice linguaggio di script, metodi per estendere le funzionalità tramite moduli, un numero minimo di dipendenze (nessun legame con M4, Perl o Python), supporto per la caching, strumenti per cross-compilazione, supporto per la generazione di file di build per una vasta gamma di sistemi di build e compilatori, utilità ctest e cpack per la definizione di script di test e pacchetti di build, e l'utilità cmake-gui per la configurazione interattiva delle impostazioni di build.
Principali :
- Aggiunto un nuovo generatore di script di build basato sul toolkit Ninja - "Ninja Multi-Config", che si differenzia dal vecchio generatore per la capacità di gestire più configurazioni di build simultaneamente.
- Nel generatore di script di build per Visual Studio la possibilità di definire file con il codice sorgente associati a ciascuna configurazione (per-config sources).
- Negli strumenti per la configurazione delle opzioni del compilatore (Compile Features) è stata aggiunta la possibilità di specificare meta-parametri per CUDA ("cuda_std_03", "cuda_std_14" e così via).
- Introdotte le variabili "CMAKE_CUDA_RUNTIME_LIBRARY" e "CUDA_RUNTIME_LIBRARY" per scegliere il tipo di librerie runtime quando si utilizza CUDA.
- Aggiunto il modulo "FindCUDAToolkit" per determinare il toolkit CUDA disponibile nel sistema senza dover abilitare il linguaggio CUDA.
- Nell'utilità cmake è stato aggiunto il comando "—debug-find" per fornire ulteriore diagnostica leggibile durante l'esecuzione delle operazioni di ricerca. È stata introdotta anche la variabile CMAKE_FIND_DEBUG_MODE per scopi analoghi.
- Nel modulo "FindCURL" è stata aggiunta la supporto per la ricerca del toolkit CURL tramite file di configurazione cmake generati "CURLConfig.cmake". Per disabilitare questo comportamento è prevista la variabile CURL_NO_CURL_CMAKE.
- Nel modulo FindPython è stata aggiunta la possibilità di cercare componenti Python in ambienti virtuali gestiti tramite "conda".
- Nell'utilità ctest sono state aggiunte le opzioni "—no-tests=[error|ignore]" per definire il comportamento in caso di mancanza di test e "—repeat" per impostare le condizioni di riavvio dei test (until-pass, after-timeout).
- Garantito il trasferimento delle proprietà dell'obiettivo di build INTERFACE_LINK_OPTIONS, INTERFACE_LINK_DIRECTORIES e INTERFACE_LINK_DEPENDS tra le dipendenze interne delle librerie staticamente collegate.
- Quando si utilizza il toolkit MinGW, per impostazione predefinita è disabilitata la ricerca di file DLL mediante il comando find_library (invece, per impostazione predefinita, viene tentato l'import delle librerie ".dll.a").
- La logica di scelta dell'utilità ninja nel generatore Ninja ora non dipende dal nome del file eseguibile — viene utilizzata la prima utilità ninja-build, ninja o samu trovata nei percorsi definiti attraverso la variabile d'ambiente PATH.
- Nell'utilità cmake è stato aggiunto il comando "-E rm", che può essere utilizzato per rimuovere file e directory invece dei comandi separati "-E remove" e "-E remove_directory".
Fonte: opennet.ru
