C++ / un squelette type pour compiler vos projets

C++ / un squelette type pour compiler vos projets

Programmer en C++ pour votre Raspberry Pi

Le développement d’application en langage python n’est pas la seule solution pour la création d’application pour votre Raspberry Pi.
C++ est également un très bon choix même si la rapidité de développement est plus faible que pour le langage Python.
Il existe plusieurs façons de développer.
La première est d’utiliser un environnement de développement complet qui permet la prise en charge de l’intégrité du projet.
C’est à dire d’édition des sources à la compilation en passant par la gestion de la configuration de la compilation et l’outil de débogage.
La seconde est l’édition d’un éditeur performant (vim, emacs…) et un outil de compilation par ailleurs.

La première méthodologie décrite ci-dessus nécessite un IDE de bonne qualité. Pour les utilisateurs d’un système basé sur Linux, le choix le plus populaire actuellement (2018) est sans doute QT Creator. Cependant sur le Raspberry Pi, cette solution est un peu couteuse en ressources.
La seconde option est, à mon sens, plus légère et permet d’avoir un environnement de développement performant et sur multiplateforme.
En effet, la manière conventionnelle de compiler sous Linux est d’utiliser un makefile, un fichier reprend en charge la compilation de votre projet en seulement une instruction.
Cependant un makefile ne vous garantit pas une compilation multiplateforme.
Il permet juste de réaliser une succession d’instruction de compilation.
Néanmoins, un outil permet de générer des makefile en fonction de la configuration des outils disponibles sur votre machine de développement.
Cet outil, c’est CMake!

CMake

Cmake vous permettra de générer des makefile pour votre projet mais également pour la copilation sur votre machine mais permettra le déployement de votre projet sur d’autres machines.

Afin de pouvoir réaliser la compilation, j’ai créé une base de projet qui me permet de démarrer rapidement un projet en langage C++ et ceci, quelle que soit la plateforme sur laquelle je développe.

Cette base de projet est disponible ici : https://github.com/clemaitre58/ProjSkeletonCpp

L’architecture du projet est la suivante :

+-- data               --> pour contenir d'éventuelles données
+-- src                --> pour vos sources
|   +-- CMakeModules   
|   +-- apps           --> sources de votre application (main.cc par exemple)
|   +-- cmake
|   +-- common         --> sources d'api, librairie, etc
|   +-- tests          --> vos tests GoogleTests ici

Pour l’utiliser, il suffit de mettre vos sources dans les dossiers commons ou apps et ensuite de réaliser l’ensemble des instructions disponible dans le README :

Compilation

Create a build folder:

mkdir build

  • Move to the created folder:

cd build

  • Create the MakeFile via cmake:

cmake ../src

To configure to be in debug mode :

cmake -DCMAKE_BUILD_TYPE=Debug ../src

  • Compile the code to generate the executable:

make or make -j n where n is the number of cores to use for the compilation

  • A folder bin will be created at the same level as the build directory.

Remarks

  • If you add new file or remove some other, you have to create the makefile again:

cmake ../src

Un exemple d’utilisation est disponible ici : https://github.com/clemaitre58/BSCVDemoCpp1718

Alors c’est quoi votre prochain projet en C++ pour votre Raspberry Pi?