Formation CMake pour le logiciel embarqué

Cette formation CMake est spécialement conçue pour les développeurs de logiciels embarqués qui veulent apprendre à écrire des scripts CMake efficaces pour des projets cross-compilés.

La formation commence par couvrir les bases de CMake et couvrir les bonnes pratiques et concepts modernes pour réaliser des projets modulaires et maintenables.
Le deuxième jour se consacre à l’automatisation du projet, en partant de la gestion des dépendances jusqu’à la création et la gestion d’un fichier toolchain. Cette formation inclut aussi plusieurs méthodes pour packager des librairies.

Cette formation CMake mélange la théorie et la pratique avec un ensemble de tutoriaux et d’exercices pratiques.

formation cmake logo

Objectifs

  1. Configurer des projets simples et complexes avec CMake
  2. Comprendre les bases de CMake (variables, cache, phases, etc.)
  3. Apprendre l’approche centrée autour des targets
  4. Gérer des dépendances sous forme de sources ou de librairies
  5. Créer un fichier toolchain ou des presets pour cross-compiler votre application/libraires
  6. Créer des SuperBuilds qui téléchargent, configurent, compilent et installent les dépendances de votre projet.

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
    • Préparer le packaging en ajoutant des règles d’installation

  • Intégration aux IDEs
    • Apprendre comment exécuter CMake depuis son IDE
    • Exemple pratique avec VSCode

    Jour 2

    • 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
    • Utiliser CMake pour lancer des commandes arbitraires à des moment précis de la compilation
      • Apprendre la différence entre les commandes exécutées à la configuration ou durant le build
    • 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
    • Gestionnaire de paquets Conan
      • Apprendre comment télécharger des dépendances pré-compilées depuis Conan
      • Exécuter et paramétrer CMake depuis Conan
      • Téléchargement de la toolchain depuis Conan
    • Cross-compilation
      • Principe de la cross-compilation
      • Écrire un fichier toolchain pour cross-compiler une application
      • Gérer les spécificités d’un projet cross-compilé
    • Packaging
      • Exporter et importer votre projet CMake (Config Modules)
      • Utiliser Conan pour créer un paquet avec votre librairie
    • Chapitres optionnels – Couverts si le temps le permet et selon l’intérêt des participants
      • Accélérer vos compilations en intégrant ccache
      • 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)
      • External Projects – Télécharger, patcher, configurer, compiler, tester et installer vos dépendances automatiquement
      • CMake policies (Comment utiliser des fonctionnalités modernes de CMake dans du code ancien)
    • Conclusion
      • Conseils pour maintenir la qualité de votre code et le débugger

    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.

    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: 
    Lieu: En ligne
    Prix: 1 500€

    Formation en Entreprise

     Nous proposons des formations personnalisées en entreprise.

    Ce qu’apporte une formation pour votre entreprise :
    – Temps dédié pour un apprentissage efficace, ce qui permet les échanges entre équipes sur leurs problèmes de compilation.
    – Dialogue avec un interlocuteur expert
    – Les participants entendent tous le même discours.
    – Récupération du support de formation.

    A propos du formateur

    Paul est ingénieur 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.

    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.