Mokona Guu Center

Biicode, un gestionnaire de dépendances pour C++

Publié le

La gestion des dépendances et l'installation des bibliothèques externes en C++ est souvent un problème, et chaque environnement de développement a sa manière de le gérer... quand il est géré.

Alors qu'en Python, un simple 'pip install package' permet de récupérer et configurer le package voulu, le C++ est encore majoritairement dans une ère à la Windows, où la dépendance entre les systèmes n'existe pas et tout s'installe au petit bonheur de la chance.

Lors de ma visite à Meeting C++, l'un des sponsors était biicode, et je suis donc allé voir par curiosité ce qu'ils proposaient.

Biicode se présente comme un système de gestion de dépendances sur plusieurs technologies. C/C++ en premier, mais aussi Arduino et Raspberry Pi et... Node.js.

La présence de Node.js m'a étonné car le système a déjà le très installé npm en gestionnaire de packages. De même, mettre un langage face à deux hardware semble étrange.

En fait, ce que je crois comprendre, c'est qu'au delà de la gestion de dépendances, biicode est un gestionnaire de bibliothèques mêlé à une suite d'outils permettant le développement facilité d'applications.

Je veux vérifier ça, et je lance donc une installation. Il est un peu étonnant de voir tant de dépendances à des bibliothèques graphiques en version développement sur le package biicode... j'essaierai de comprendre pourquoi plus tard.

Le côté close source de l'outil ne me plait pas trop, mais il y a a priori une volonté de passer Open Source une fois la base installée sécurisée. Soit.

Je me lance dans la suite qui permet de créer un projet C++ :

     bii init
     bii new mokona/mytest
          ... ajouter un programme liant gtest ...
     bii find bii cpp:build

C'est rapide et ça fonctionne. Je note au passage la création d'une arborescence assez conséquence mais bien triée. Et le côté un peu pénible d'avoir à la racine deux répertoires aux noms similaires (bin et bii) qui m'obligent à taper trois lettre derrière mes 'cd'... Je pinaille.

Ça peut être une bonne idée. Surtout que le build system étant basé sur CMake, il est possible de choisir un générateur (au sens CMake, un générateur peut créer des projets pour des éditeurs et IDE particuliers) et donc de laisser le choix quand à la manière de développer.

Les débuts sont prometteurs, je continuerai mes tests.