CMake est un système de compilation et de construction de projets multiplateforme et Open Source. À l'aide d'un simple fichier CMakeLists.txt décrivant votre projet, CMake sera capable de générer des fichiers pour votre EDI préféré. En résumé, il configure votre projet Visual Studio, Code::Blocks, XCode ou même un simple Makefile pour vous et il ne vous reste plus qu'à compiler. Parmi les fonctionnalités intéressantes, il peut directement récupérer votre projet à partir d'un serveur de gestion de versions, gérer les dépendances, préparer les fichiers pour la compilation et l'installation.
Grâce à CMake, votre projet peut être facilement compilable sur différentes plateformes sans pour autant avoir à trifouiller dans les fichiers de compilation.
Documentation
La documentation du logiciel a été convertie pour utiliser reStructuredText. Cela permet à l'équipe d'écrire une documentation à partir de laquelle des HTML et des pages de manuels pourront être générés et où l'indexation sera fonctionnelle ainsi que les références croisées. De plus, une série de pages de manuel a été ajoutée, contenant maintenant cmake-generators, ou encore cmake-qt.
Nouvelles fonctionnalités
Générateurs
- nouveau générateur CodeLite, compatible avec les générateurs Makefile et Ninja.
- nouveau générateur Kate, compatible avec les générateurs Makefile et Ninja.
- le générateur Ninja, supporte les piscines de jobs.
Commandes
- la commande add_library() peut utiliser le nouveau type de bibliothèque INTERFACE. Ce type de bibliothèque ne possède pas de règles de compilation mais peut avoir des propriétés et peuvent être installées, exportées et importées. Cela est très pratique pour les bibliothèques composées que de fichier d'en-têtes.
- la commande message() peut utiliser le nouveau mode DEPRECATED. Par défaut ils ne sont pas affichés, mais peuvent l'être en tant qu'avertissements avec CMAKE_WARN_DEPRECATED ou en tant qu'erreur avec CMAKE_ERROR_DEPRECATED.
- la commande export() possède un nouveau mode qui récupère la liste des cibles configurées à travers install(TARGETS). De plus, elle peut maintenant fonctionner avec les ensembles d'exportations ayant des dépendances multiples.
- la commande string() possède un nouveau mode CONCAT.
- la commande ctest_update() peut mettre à jour les arbres de travail gérés avec Perforce.
Variables
- la variable CMAKE_FIND_NO_INSTALL_PREFIX a été ajoutée indiquée de ne pas ajouter la valeur de CMAKE_INSTALL_PREFIX dans CMAKE_SYSTEM_PREFIX_PATH.
- la variable CMAKE_STAGING_PREFIX a été ajoutée pour gérer les cas de compilation croisée, où CMAKE_INSTALL_PREFIX diffère entre l'hôte et la cible.
- la variable CMAKE_SYSROOT a été ajoutée pour spécifier le chemin d'installation du SDK.
Propriétés
- une nouvelle propriété CMAKE_CONFIGURE_DEPENDS a été ajoutée pour permettre aux projets de spécifier des fichiers supplémentaires nécessaires au processus de configuration.
- AUTORCC remplace qt4_add_resources() en permettant de lister les fichiers .qrc comme fichiers sources.
- AUTOUIC remplace qt4_wrap_ui().
Modules
- les modules CheckTypeSize et CheckStructHasMember ont une nouvelle option LANGUAGE pour vérifier les types C++.
- le module ExternalData peut travailler sans URL pour les fichiers locaux.
- le module ExternalProject possède une nouvelle option GIT_SUBMODULES pour les projets GIT ayant un sous module.
D'autres fonctionnalités ont été ajoutées et vous pourrez trouver la liste complète sur le site officiel.
Vous pouvez récupérer CMake, sur la page de téléchargements officielle.
Votre opinion
Utilisez-vous souvent CMake ? Quels sont d'après vous ses points forts et faiblesses ?
Qu'aimeriez-vous voir dans CMake ?
Voir aussi
Tutoriel : Initiation à CMake
Tutoriel : Utiliser CMake et Qt 5 conjointement
Source
Annonce officielle