la version du générateur de scripts de construction multiplateforme et open source , servant d'alternative à Autotools et utilisé dans des projets tels que KDE, LLVM/Clang, MySQL, MariaDB, ReactOS et Blender. Le code de CMake est écrit en C++ et distribué sous licence BSD.
CMake est remarquable pour sa fourniture d'un langage de script simple, d'extensions fonctionnelles via des modules, d'un minimum de dépendances (pas de lien avec M4, Perl ou Python), de support pour la mise en cache, d'outils pour la cross-compilation, de génération de fichiers de construction pour une large gamme de systèmes de construction et de compilateurs, présentant les utilitaires ctest et cpack pour la définition des scripts de test et de construction de paquets, ainsi que l'outil cmake-gui pour le paramétrage interactif des options de construction.
Principales :
- Une prise en charge initiale du langage , développé par Apple ;
- Ajout de la prise en charge de la variante du compilateur Clang pour Windows, réalisant une compilation avec l'ABI MSVC, mais utilisant des options de ligne de commande de style GNU ;
- Ajout des variables CMAKE_MSVC_RUNTIME_LIBRARY et MSVC_RUNTIME_LIBRARY pour sélectionner les bibliothèques d'exécution utilisées par les compilateurs basés sur l'ABI MSVC (MS Visual Studio) ;
- Pour les compilateurs comme MSVC, les listes d'options de contrôle de l'affichage des avertissements, telles que "/W3", ont par défaut été supprimées de CMAKE__FLAGS ;
- Ajout de l'expression de générateur « COMPILE_LANG_AND_ID: » pour définir les options du compilateur pour les fichiers cibles, appliquant les variables CMAKE__COMPILER_ID et LANGUAGE pour chaque fichier de code ;
- Dans les expressions de générateur C_COMPILER_ID, CXX_COMPILER_ID,
CUDA_COMPILER_ID, Fortran_COMPILER_ID, COMPILE_LANGUAGE,
COMPILE_LANG_AND_ID et PLATFORM_ID, ajout de la prise en charge de la correspondance d'une valeur avec une liste, les éléments étant séparés par des virgules ; - Ajout de la variable CMAKE_FIND_PACKAGE_PREFER_CONFIG, ce qui fera que l'appel à find_package() recherchera en priorité le fichier de configuration du package, même si un module de recherche est disponible ;
- Pour les bibliothèques d'interface, ajout de la prise en charge de l'installation des propriétés PUBLIC_HEADER et PRIVATE_HEADER, dont les en-têtes peuvent être installés à l'aide de la commande install(TARGETS) via le passage des arguments PUBLIC_HEADER et PRIVATE_HEADER ;
- Ajout de la variable CMAKE_VS_JUST_MY_CODE_DEBUGGING et de la propriété cible VS_JUST_MY_CODE_DEBUGGING pour activer le mode « Just My Code » dans le débogueur Visual Studio lors de la compilation avec MSVC cl 19.05 ou des versions ultérieures ;
- Le module FindBoost a été retravaillé pour mieux fonctionner dans les modes Config et Module en présence d'autres modules de recherche ;
- Un support pour les types NOTICE, VERBOSE,
DEBUG et TRACE a été ajouté à la commande message() ; - La commande « export(PACKAGE) » ne fait plus rien jusqu'à ce qu'elle soit explicitement activée par la variable CMAKE_EXPORT_PACKAGE_REGISTRY.
Source : opennet.ru
