Formation CMake

Notre formation CMake aborde de manière approfondie les fonctionnalités de CMake et présente les modalités de rédaction de scripts CMakes efficaces pour les projets de toutes tailles.

La deuxième partie de cette formation porte sur les tests unitaires avec CTest, le packaging avec CPack et l’intégration continue avec CDash.

Cette formation allie théorie et pratique par le biais de tutoriels et d’exercices.

formation cmake logo

Objectifs

  1. Comprendre la configuration de projets simples et complexes avec CMake
  2. Prendre en main l’outil de configuration CMake
  3. Expérimenter avec l’écriture de tests unitaires à l’aide de CTest
  4. Expérimenter le packaging avec CPack
  5. Prendre en main l’outil de reporting CDash

Prérequis

C/C++ : Connaissances de base

Jour 1

  • Premiers pas avec CMake

    • Historique de CMake

    • Les avantages de CMake

    • Fonctionnalités principales de CMake et configuration du pipeline

  • Démarrer un projet CMake

    • Syntaxe de CMake: variables, utilisation du cache, gestions des phases de configuration

    • Démarrer un projet CMake

    • Passer des définitions et options au compilateur

    • Étendre les fonctionnalités de CMake avec les fonctions, macros et l’inclusion de fichiers

    • Optimiser la compilation avec les build configurations

    • Optimiser la gestion des librairies

  • Bonne pratiques d’un code CMake moderne

    • Convertir du CMake legacy en CMake moderne

    • Bonnes pratiques avec une approche centrées sur les targets

    • Ajuster la propagation des propriétés de targets dépendantes

    • Créer des configuration de build dépendantes du build configuration avec les generator expressions

    • Comprendre l’introspection du système

    • Préparer le packaging en ajoutant des règles d’installation

  • Écrire des tests unitaires avec CTest

    • Présentation de l’outil de lancement de tests : CTest

    • Tester rapidement et facilement des applications et algorithmes

    • Intégration de CTest dans d’autres frameworks

    • Implémenter des tests d’intégration avec les fixtures

Jour 2

  • Packaging avec CPack

    • Présentation de l’outil de packaging: CPack (fourni avec CMake)

    • Créer rapidement et efficacement des packages et installeurs pour plusieurs plateformes  : Windows, Mac, Linux (Debian installers and Yum)

  • Introspection du système

    • Comprendre les FindModules et comment les utiliser

    • Ecrire des FindModules pour importer des projets non compatibles avec CMake

    • Comprendre comment les FindModules trouvent des fichiers sur la machine hôte

    • Utiliser les fonctionnalités try_compile et try_run pour récupérer des informations spécifiques à la machine hôte

  • CMake Presets

    • Préparer l’environnement de CMake pour configurer, compiler, tester et packager votre projet

    • Définir automatiquement des variables d’environnement ou des variables CMake

  • Intégration continue avec CDash

    • Implémenter un prototype d’intégration continue

    • Envoyer les résultats des tests à CDash

    • Maintenir un aperçu global de la qualité du code

    • Fonctionnalité de CDash : code coverage, analyse mémoire, configuration de compilation

  • CMake avancé

    • Utiliser CMake pour lancer des commandes arbitraires à des moment précis de la compilation

    • Mélanger les types de librairies

    • Gérer la visibilité des symboles dans MSVC

    • Exporter et importer vos projets CMake (Config Modules)

    • Gérer les librairies internes et externes

    • Faire de la cross-compilation avec CMake

    • CMake policies (Comment utiliser des fonctionnalités modernes de CMake dans du code ancien)

  • External Projects

    • Télécharger, patcher, configurer, compiler, tester et installer vos dépendances automatiquement

    • Compiler votre projet et ses dépendances automatiquement dans un SuperBuild

    • Présentation du package manager Conan

  • Conclusion

    • Conseils pour maintenir la qualité de votre code et le débugger

    • Présentation rapide des dernières fonctionnalités de CMake

      Cette formation sera donnée en anglais sauf si tous les participants maîtrisent la langue française.

      Pour cette formation, chaque participant doit venir avec son ordinateur portable. Les spécificités d’installation seront communiquées en amont par l’instructeur.

      Les supports de cours sont en anglais.
      Le repas du midi est inclus.

      Les formations Kitware peuvent être personnalisées et dispensées selon vos besoins aux centres de formation Kitware (En Europe: Lyon, France; ou aux USA: Clifton Park, New York; Carrboro, North Carolina; Santa Fe, New Mexico) ou dans votre entreprise (demande de devis).

      Informations Pratiques

      Durée: 2 journées
      Prochaine Date: 2-3 octobre 2023
      Lieu: En ligne (webinar)
      Prix: 1 500€ (Kitware est agréé centre de formation)

      Formation en Entreprise

       Nous proposons des formations personnalisées en entreprise.

      A propos du formateur

      Paul est ingénieur en R&D dans l’équipe Solutions Logicielles. Son expérience à Kitware lui a permis d’acquérir un grand nombre de compétences allant du développement Web (Ex: Girder, VTK, Cherrypy, Django, React et Vue.js), au développement en C++ avec CMake.
      Son expérience avec CMake, sa formation, ses compétences sociales et son irrépressible envie de partager ses connaissances en ont fait un formateur naturel pour CMake. Jusqu’à ce jour, il a donné plus d’une douzaine de formations CMake tout en améliorant le support de formation utilisé par d’autres formateurs.

      En plus d’être développeur et formateur, Paul est aussi administrateur système de KEU et met en place et maintient des environnements d’Intégration Continue sur différentes plateformes et systèmes d’exploitation.

      Dans le cadre de son diplôme d’ingénieur à l’INSA de Lyon, Paul a passé un semestre à University College Dublin, où il a travaillé sur le traitement des signaux et images biomédicaux et la sécurité des réseaux.
      Avant de rejoindre Kitware en 2019, Paul a travaillé en tant que développeur C++/Python pour une start-up où il a conçu des preuves de concept dans le domaine de l’IOT.