Il y a quelques semaines, nous avons publié la nouvelle version de notre librairie C++. La principale nouveauté est le chiffrement SSL/TLS pour les communications. Cette nouvelle fonctionnalité change la manière de compiler notre librairie C++ avec vos projets. Regardons ce qui change.
Au lieu de réécrire le support SSL/TLS, nous avons décidé d'utiliser la librairie Mbed TLS. Comme le proverbe le dit, "cela ne sert à rien de réinventer la roue", et c'est particulièrement vrai pour les librairies de cryptographie.
Lors de cette intégration, nous avons modifié l'arborescence de nos fichiers sources et donc la manière de compiler notre librairie.
Afin de garder cet article relativement court, nous n'allons pas explorer en détail comment configurer chaque IDE pour compiler la librairie C++ dans tous les IDEs disponibles. Nous allons nous focaliser sur les étapes nécessaires pour compiler notre librairie et l'ajouter à un projet.
Si vous n'avez jamais utilisé notre librairie C++, nous vous recommandons de commencer par ces trois articles:
- Comment débuter en C++ avec les modules Yoctopuce
- Ajouter la librairie C++ dans votre IDE en 2021
- Compiler la lib C++ avec CMake
Compiler la librairie sans SSL/TLS
Il est possible de compiler la librairie, sans inclure la partie cryptographie et la librairie Mbed TLS. C'est la solution qui demande le moins de changements à vos projets existants. Le seul changement requis est de définir la macro NO_YSSL dans votre makfile ou votre IDE.
Tout le code qui utilise la librairie Mbed TLS est encapsulé dans des directives #ifdef et #ifndef. Cela permet d'utiliser notre librairie comme par le passé.
Voici un extrait du code source de notre libraire. Si la macro NO_YSSL est définie, la partie SSL/TLS n'est pas compilée.
{
int res;
res = yTcpInitBasic(errmsg);
#ifndef NO_YSSL
if (!YISERR(res)) {
res = yTcpInitSSL(errmsg);
}
#endif
return res;
}
Tous les compilateurs et IDEs ont la possibilité de configurer globalement une macro/définition qui sera passée au préprocesseur. Par exemple, GCC utilise l'option -D.
Dans Visual Studio cela peut être fait dans les propriétés du projet.
La définition de NO_YSSL dans un projet Visual Studio
En résumé, pour compiler la libraire sans le support SSL/TLS, il faut ajouter le répertoire Sources dans votre include path pour que le compilateur trouve les fichiers yocto_xxx.h.
Ensuite, il faut définir la macro NO_YSSL et compiler les fichiers suivants:
- Les fichiers C++ utilisés par votre programme du répertoire Sources
- Tous les fichiers C du répertoire Sources/yapi
Compiler la librairie avec SSL/TLS
Pour compiler la libraire avec le support SSL/TLS, il faut inclure les fichiers de la librairie Mbed TLS en plus des fichiers "traditionnels" de notre librairie. Ces fichiers sont inclus dans l'archive de notre librairie C++ dans le sous-répertoire Sources/yapi/mbedtls
Donc, pour compiler la librairie, il faut aussi ajouter les répertoires suivants dans votre include path:
- Le répertoire Sources
- Le répertoire Sources/yapi/mbedtls/include
Il faut ensuite compiler les fichiers suivants:
- Les fichiers C++ utilisés par votre programme du répertoire Sources
- Tous les fichiers C du répertoire Sources/yapi
- Tous les fichiers C du répertoire Sources/yapi/mbedtls/library
Enfin, sous Windows uniquement, il faut aussi ajouter la librairie bcrypt.lib lors de la phase de linkage.
Dans Visual Studio, cette option s'appelle "Additional Dependencies" et est accessible dans les propriétés du projet.
Sous Windows, il faut linker avec la librairie bcrypt.lib
Les environnements supportés
Les compilateurs supportés et testés sont GCC, Clang et Microsoft C++ (MSVC), mais normalement n'importe quel compilateur C++ devrait fonctionner.
Comme toujours, le sous-répertoire Examples de notre librairie C++ contient de nombreux exemples qui vous permettent de ne pas partir d'une feuille blanche.
Chaque exemple contient un projet Visual Studio, Xcode, Code::Blocks ainsi qu'un makefile GNU. Nous avons aussi un exemple Prog-CMake qui utilise CMake. Dans la très grande majorité des cas, vous devriez trouver un exemple fonctionnel qui utilise votre IDE ou votre environnement de compilation.
Nous avons essayé de rester le plus portable possible, mais si vous n'arrivez pas à compiler la librairie dans votre IDE, n'hésitez pas à contacter le support Yoctopuce (support@yoctopuce.com).