Utiliser facilement les librairies avec CodeLite

Nous avons vu l’utilisation de CodeLite dans un article précédent.

En programmation, on utilise souvent des librairies.

Une librairie fournit un ensemble de fonctions ou d’objets permettant de remplir des tâches complexes. On pourra citer dans le domaine de l’embarqué: libmodbus, libgammu, piduino

Pour utiliser une librairie en langage C ou C++, il faut disposer de 2 choses:

  • Un ou plusieurs fichiers .h qui décrivent l’interface d’utilisation (API) et qui doivent être ajoutés au début des fichiers où on utilise la librairie (avec un #include)
  • Un fichier contenant le code exécutable et les données statiques. Dans Linux, on trouve 2 formats:
    • le fichier statique (extension .a) qui permettra d’inclure les informations au moment de la compilation
    • le fichier dynamique (extension .so) qui chargera les informations au moment de l’exécution.

Il faut préciser qu’il est parfois nécessaire pour compiler un programme correctement avec une librairie d’ajouter des options sur la ligne de commande du compilateur (gcc).

Lorsqu’on souhaite utiliser CodeLite, il faut donc lui donc lui donner toutes ses informations, ce qui peut devenir fastidieux !

Heureusement, la plupart du temps, les librairies sont fournies avec des fichiers qui décrivent ses informations. Pour lire ses informations, on utilise le programme pkg-config.

Faisons un essai avec libmodbus (qu’on suppose installée…):

$ pkg-config --cflags --libs libmodbus
-I/usr/local/include -L/usr/local/lib -lmodbus
--cflags permet de demander les options à passer au compilateur, alors que --libs permet de demander les options à passer à l’éditeur de liens (linker).

Dans CodeLite, nous pouvons utiliser pkg-config pour configurer automatiquement les options de compilation et d’édition de liens.

En faisant, un clic-droit sur le dossier du projet dans le bandeau de gauche, on sélectionne Settings, puis Compiler:

On sélectionne C Compiler Options, puis on clic sur les 3 petits points

On entre dans la boite blanche la commande $(shell pkg-config --cflags libmodbus)

Puis on sélectionne Linker

On entre dans la boite blanche la commande $(shell pkg-config --libs libmodbus)

On valide par Ok

On peut alors voir lors de la compilation, que les options ont été automatiquement passées au compilateur: