Accueil » Compilation LibUSB & LibUVC avec Msys2

Compilation LibUSB & LibUVC avec Msys2

Compilation des librairies LibUSB et LibUVC avec Msys2

Après avoir mis en place une machine virtuelle d’un environnement Windows 20H2 (voir page précédente), nous allons testé de compiler les librairies LibUSB et LibUVC afin de récupérer un flux vidéo de notre caméra thermique FLIR Lepton 3.5. Pour cela, nous allons utilisé la plateforme-forme de distribution et de développement de logiciels Msys2.

Nous partons donc du snapshot « 2 – Update OK Desactivé ».

Installation de Msys2

Pour installer Msys2, nous allons sur le site officiel de la plateforme « https://www.msys2.org/ ». Nous téléchargeons donc l’installeur de msys2 dans un répertoire « Sources » du Disque Local (C:).

Msys2 x86-64

1 file     96.104 MB     15/02/2021

Nous installons MSYS2 64bit dans un répertoire « C:\msys64 », c’est donc une installation par défaut.

Nous choisissons à cet endroit de faire un snapshot « 3.5 – Base Msys 2 ».

Ensuite, nous allons ajouter des composants dans l’environnement Msys2. Cela va nous permettre de compiler la LibUSB. Nous exécutons le terminal MSYS2 MinGW 64-bit via le menu démarrer. La liste des packages installables se trouve sur le site « https://packages.msys2.org/package/ ».

Terminal

Compilation de la LibUSB avec Msys2

Pour compiler la LibUSB, nous allons devoir télécharger le dossier LibUSB que nous récupérons sur le GitHub officiel des librairies LibUSB « https://github.com/libusb/libusb ».

LibUSB

52 files     521 KB     13/02/2021

Nous décompressons cette archive dans un répertoire « C:\work ». Nous renommons le dossier libusb-master en libusb et nous simplifions le chemin en supprimant le double dossier « libusb » créé lors de la décompression.

Nous ouvrons maintenant le terminal MSYS2 MinGW 64-bit et nous exécutons les commandes suivantes pour compiler les librairies.

Terminal

La compilation se déroule avec succès grâce aux composants installés dans la première étape. Nous pouvons maintenant vérifier cela en exécutant le programme dans le dossier examples « listdevs.exe ». Nous ouvrons pour cela l’invité de commandes de Windows (CMD) :

Terminal

Liste des dispositifs USB reconnus

Dans un premier temps, notre caméra FLIR Lepton 3.5 n’était pas branchée. Ensuite, nous la branchons et notre caméra apparait bien dans la liste des dispositifs USB, c’est le device 6 du bus 3. Nous faisons donc ici un snapshot « 4.1 – Compilation LibUSB OK »

Nous pouvons maintenant commencer la compilation de la LibUVC, qui nécessitera le fichier « libubs-1.0.dll » obtenu lors de la compilation de la LibUSB.

Installation de Cmake-GUI sur Msys2

De plus, nous allons devoir utiliser l’interface graphique du compilateur Cmake pour pouvoir compiler cette seconde librairie. Nous devons donc l’installer sur l’environnement Msys2, via le terminal MSYS2 MinGW 64-bit.

Terminal

Compilation de la LibUVC avec Msys2

Pour compiler la LibUVC, nous allons devoir télécharger le dossier LibUVC que nous récupérons sur le GitHub officiel des librairies LibUVC « https://github.com/libuvc/libuvc ».

LibUVC

12 files     120 KB     25/02/2021

Nous décompressons cette archive dans le répertoire « C:\work ». Nous renommons le dossier libuvc-master en libuvc1 et nous simplifions le chemin en supprimant le double dossier « libuvc » créé lors de la décompression.

Nous ouvrons maintenant le terminal MSYS2 MinGW 64-bit et nous exécutons les commandes suivantes pour compiler les librairies.

Terminal

La compilation de la librairie ne peut pas s’exécuter de cette manière. En effet, il manque un fichier « cl.exe » qui impliquerait l’installation de l’environnement Microsoft Visual Studio. C’est donc ici que nous allons avoir besoin de l’interface graphique de Cmake.

Nous exécutons Cmake-gui grâce à la commande suivante, toujours sur le terminal Msys2 :

Terminal

Nous allons configurer Cmake en renseignant les informations suivantes :

  • Source : C:/work/libuvc1
  • Build : C:/work/libuvc1/build
  • Generator : MSYS Makefiles, use default native compilers

En cliquant sur Configure puis Generate, nous nous apercevons qu’il manque un lien : Target « uvc » links to target « LibUSB::LibUSB » but the target was not found.

Nous allons donc devoir modifier le fichier CmakeLists.txt du réperoitre libuvc1 pour l’adapter. Nous avons fait 4 changements sur ce fichier : 

  • lien vers la librairie LibUSB (find_library(LIBUSB_LIBRARY_NAMES)) et find_path(LIBUSB_INCLUDE_DIR))
  • Ajout de la librairie dans « target_include_directories »
  • Ajout du lien avec target_link_libraries
  • Mise en commentaire de l’ancien target_link_libraries de LibUSB

Texte

Nous pouvons maintenant réouvrir Cmake, nous sélectionnons l’option « Delete Cache » dans « File » pour repartir de zéro. Il faut renseigner les liens surlignés en jaune pour avoir la même configuration que nous : 

Compilation de la LibUVC avec Cmake

Ensuite, il faut cliquer sur Configure puis Generate. Nous ouvrons le terminal MSYS2 pour utiliser le makefile qui vient d’être créé :

Terminal

La LibUVC est maintenant compilée. Nous allons devoir ajouter des fichiers .dll dans le répertoire « C:\work\libuvc1\build » pour exécuter l’example :

  • libusb-1.0.dll
  • libwinpthread-1.dll

Ces fichiers se trouvent dans le répertoire « C:\msys64\mingw64\bin » et nous les copions dans le build.

Nous ouvrons maintenant l’invité de commandes (CMD) de Windows pour exécuter l’exemple.

Terminal

Détection de notre caméra avec la librairie LibUVC

La première exécution du programme s’est faite sans caméra branchée. En branchant la caméra, nous voyons que le dispositif est trouvé (comme avec la librairie LibUSB). Cependant, il n’est pas supporté par la librairie LibUVC.

Nous faisons à cet endroit un snapshot « 6.1 – Compilation LibUVC avec Example OK ».