Cette semaine, nous allons vous montrer comment utiliser notre librairie C++ avec l'IDE CLion. Cet IDE est très pratique au point que nous avons mis à jour nos exemples C++ pour qu'ils fonctionnent directement avec cet IDE.
Note: nous partons du principe que vous avez déjà un minimum de connaissances du langage C++ et de notre librairie de programmation. Si ce n'est pas de cas, nous vous conseillons de commencer par la lecture de notre article "Comment débuter en C++ avec les modules Yoctopuce" qui explique comment fonctionne notre librairie.
Commençons par préciser que nous ne sommes d'aucune manière affiliés ou sponsorisés par JetBrains, la société qui développe CLion. Nous avons fait cette modification car une partie de l'équipe de développement de Yoctopuce utilise quotidiennement ces produits. On s'est aussi dit que cela pourrait intéresser nos utilisateurs.
l'IDE CLion
Le C++ est un langage de programmation très puissant, mais compliqué à utiliser, en particulier si l’on travaille avec plusieurs OS. Durant le développement, il faut gérer les différences entre les OS, par exemple les deux types de séparateurs de répertoire (/ vs \). De plus chaque OS implémente un peu différemment le standard Posix.
Mais la plus grosse difficulté est de devoir utiliser plusieurs IDE et compilateurs. En effet, Microsoft recommande l’utilisation de VisualStudio et de son compilateur cl, macOS recommande l'utilisation de l'IDE Xcode et du compilateur Clang, sous Linux traditionnellement on utilise le compilateur gcc et un simple éditeur de texte. Bien sûr, il est possible d'installer gcc aussi sous Windows et macOS mais la procédure est pénible, en particulier si on utilise des librairies externes comme Pthread, openSSL, libUSB, etc. Bref, on se retrouve souvent à devoir utiliser et maintenir deux ou trois projets pour compiler une même application pour plusieurs OS. C'est là que CLion et CMake entrent en jeu.
CLion est un Environnement de développement (IDE) mulitplatforme. Contrairement à Visual Studio ou XCode qui ont leur propre système de build, CLion se base sur des systèmes de build déjà existants comme Gradle ou CMake. CLion n'est en fait "qu'une" surcouche graphique à un système de build comme CMake.
L’éditeur de code de CLion est très confortable et possède toutes les fonctionnalités d'un IDE moderne, comme l'autocomplétion, l'indentation automatique, la navigation entre les fonctions, la mise en évidence des erreurs de compilation, etc. Mais la véritable fonctionnalité de CLion est le débogueur intégré qui permet de faire du step by step dans le code de l’application directement depuis l'IDE. Tous ceux qui ont dû déboguer une application à l'aide de gdb réalisent à quel point cette fonctionnalité est précieuse.
Ces fonctionnalités sont présentes dans VisualStudio et XCode. Mais sous Linux, il n’y a pas vraiment d'autre IDE qui a le même niveau d'intégration. Même si vous n'utilisez que Windows et macOS, cet IDE vous permet de gagner en confort en ayant le même IDE sur toutes les plates-formes.
Notre librairie C++
Pour les raisons que nous venons de mentionner, nous avons décidé d'ajouter un projet CMake pour tous les exemples de notre librairie C++. Comme nous l'avons vu, les projets CMake sont supportés par CLion. Donc, les exemples C++ peuvent être compilés depuis un terminal avec CMake, ou depuis l'IDE CLion.
Pour pouvoir utiliser ces exemples dans CLion, il faut donc installer sur la machine CLion, CMake et un naturellement un compilateur C++.
L'installation de CLion et de CMake ne présente pas de difficulté particulière sous Windows et macOS. Sous Linux, l'installation est un peu différente en fonction de votre distribution, mais rien de très compliqué. Notez que si vous êtes sous Ubuntu ces deux applications sont disponibles directement depuis l’application "Ubuntu Software Manager".
Clion peut être téléchargé sur le site de JetBrains, et CMake sur https://cmake.org.
Projets d'exemple
Nous n'allons pas détailler le contenu du fichier CMakeList.txt, car nous avons déjà un article sur le sujet. Mais nous allons voir comment ouvrir et déboguer le programme d'exemple "Doc-Inventory" qui est inclus dans notre librairie C++.
Ouvrir un projet CMake existant avec CLion est trivial. Il suffit de sélectionner le fichier CMakeList.txt principal lors de l'ouverture d'un projet. Dans notre cas, c'est celui qui se trouve dans le répertoire Examples/Doc-Inventory.
A l'ouverture du projet, il faut selectionner le fichier CMakeList.txt
CLion va parser ce fichier et référencer tous les fichiers sources et détecter les compilateurs installés sur la machine. Avec ces informations il va générer un profile qui sera utilisé pour compiler le code.
Le profile pour Windows
Les profiles Linux et macOS
Une fois le profile validé, on peut directement lancer le programme à l'aide de l’icône play, mais le plus intéressant est de pouvoir ajouter un breakpoint depuis l'éditeur et déboguer le programme directement depuis l'IDE.
CLion permet de débugger confortablement le code C++
L'interface graphique permet d'inspecter les variables et la pile d’exécution. Comme les fichiers source de notre librairie sont présents, il est même possible d'inspecter le contenu les objets de notre librairie et même tracer l’exécution à l'intérieur de notre code.
Licence et prix
Si CMake est open source et gratuit, CLion est un produit closed source et payant avec un système d'abonnement. Nous sommes d'habitude assez réticents aux systèmes d'abonnement pour les logiciels informatiques, mais dans ce cas particulier le deal nous semble correct.
D'une part, si sous avez souscrit au minimum 12 mois de suite à l'abonnement vous êtes éligible pour une "perpetual fallback license" qui vous permet d'utiliser à vie la version disponible au moment de la souscription de l’abonnement.
D'autre part, vos données ne sont pas "prisonnières" de CLion, puisque la compilation est effectuée par CMake. Si vous arrêtez l'abonnement vous pourrez toujours éditer le fichier C++ à l'aide d'un produit concurrent et compiler votre projet depuis un terminal à l'aide de CMake.
JetBrains semble aussi proposer des licences gratuites pour les étudiants et pour les projets Open Sources, mais nous n'avons pas regardé en détail les conditions pour être éligible.
On vous laisse juge sur le prix et les conditions d'utilisation de ce produit.