Developpez.com - Rubrique C++

Le Club des Développeurs et IT Pro

CMake 3 est maintenant disponible

Nouveaux générateurs, variables, propriétés et meilleure gestion de la compilation croisée

Le 2014-06-13 14:27:13, par LittleWhite, Responsable 2D/3D/Jeux

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
  Discussion forum
3 commentaires
  • mangobango
    Membre averti
    (Bein quoi? Il est bien c't'article, en plus j'ai pas vu de faute de grammaire, ce qui se faisait rare! Bon, "piscine de jobs" c'était marrant mais je ne trouve pas d'autre formule non plus!)

    Moi, et je vais faire mon gros troll poilu et transpirant, j'aimerais juste qu'ils bazardent leur langage de programmation (c'est tout ). Qu'ils en prennent un existant et bien fichu, avec une syntaxe légère et expressive (au hasard Python - et non je n'aime pas SCons) et qu'ils mettent le leur à la retraite.
    Voilà, le troll est soulagé!

    Sinon, j'aime bien CMake et les idées dans la dernière version semblent excellentes.

    Daniel
  • bombseb
    Membre expérimenté
    qui est-ce qui a fait la traduction de cet article ?
  • transgohan
    Expert éminent
    J'aime bien CMAKE mais c'est dommage qu'on doive se trimballer une vieille version sous Solaris...
    Et le pire... C'est quand tu signales un bug reproduit sous Solaris. Et qu'ils sortent une correction... Sous linux...
    Certains bugs signalés par des utilisateurs Solaris sont corrigés depuis 2ans et on les attend encore...