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 supporto per i linguaggi Objective C (“OBJC”) e Objective
C++ (“OBJCXX”), che possono essere attivati tramite i comandi project() e enable_language(), dopo i quali il codice nei file “.m” e “.mm” verrà compilato come codice Objective C e Objective C++, e non come codice C++, come avveniva in precedenza; - Aggiunto supporto per il compilatore Clang sulla piattaforma Solaris;
- Aggiunti nuovi parametri da riga di comando: «cmake -E true|false» per emettere codici di ritorno 0 e 1; «cmake —trace-redirect=» per reindirizzare le informazioni di tracciamento in un file, anziché
«stderr»; il comando «cmake —loglevel» è stato rinominato in «—log-level» per allinearsi con la denominazione degli altri comandi; - Aggiunto il comando «target_precompile_headers()» per elencare i file di intestazione utilizzati nella precompilazione (riduce i tempi di build);
- Aggiunta la proprietà «UNITY_BUILD», che attiva la modalità batch per l'elaborazione dei file sorgenti nei generatori per accelerare il processo di build;
- Aggiunti i comandi «find_file()», «find_library()», «find_path()»,
«find_package()» e «find_program()» per la ricerca di file, librerie, percorsi, pacchetti e file eseguibili in base a variabili che definiscono i percorsi di ricerca per diverse categorie di file.
Per gestire i percorsi di base per la ricerca vengono utilizzate le variabili «CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH», «CMAKE_FIND_USE_CMAKE_PATH», «CMAKE_FIND_USE_CMAKE_SYSTEM_PATH», «CMAKE_FIND_USE_PACKAGE_ROOT_PATH», «CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH» e «CMAKE_FIND_USE_PACKAGE_REGISTRY»; - È stata aggiunta al comando «file()» la modalità «file(GET_RUNTIME_DEPENDENCIES)», che consente di estrarre ricorsivamente l'elenco delle librerie utilizzate durante il linking dinamico del file eseguibile o della libreria. Questa modalità sostituisce il comando GetPrerequisites(), ora dichiarato obsoleto;
- Nel comando «ctest(1)» è stata implementata la possibilità di serializzazione dei test, basandosi sulle risorse richieste da ciascun test;
- La variabile «CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY» è stata dichiarata obsoleta, e si consiglia di utilizzare «CMAKE_FIND_USE_PACKAGE_REGISTRY»;
- Migliorato il supporto per la piattaforma AIX. Utilizzando la proprietà «ENABLE_EXPORTS», oltre al file eseguibile, ora viene generato un file di importazione per l'linker, salvato con estensione «.imp». Nei plugin creati tramite la chiamata «add_library()» con l'opzione «MODULE», questo file può essere utilizzato durante il linking con il comando «target_link_libraries()». Il linking runtime su AIX è disabilitato per impostazione predefinita, poiché CMake fornisce ora tutte le informazioni necessarie sui simboli per il linking al momento del caricamento. Per abilitare il linking runtime delle librerie dinamiche o dei moduli caricabili, è necessario specificare esplicitamente le opzioni «-Wl,-G» nell'elenco delle flag del linker, definite tramite le variabili «CMAKE_SHARED_LINKER_FLAGS» e «CMAKE_MODULE_LINKER_FLAGS»;
Fonte: opennet.ru
