Framework CLI pour C++ : cppcli — création d'applications console

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Framework CLI pour C++ : cppcli — création d'applications console puissantes



Le développement d'interfaces console (CLI) en C++ nécessite souvent une analyse manuelle des arguments, la gestion des drapeaux et l'organisation des commandes. La bibliothèque cppcli fournit un framework prêt à l'emploi pour créer rapidement des applications CLI professionnelles. Elle permet de se concentrer sur la logique métier plutôt que sur l'infrastructure d'entrée-sortie. Dans cet article, nous allons examiner les fonctionnalités clés de cppcli, fournir des exemples de code et montrer comment l'intégrer dans votre projet.



Fonctionnalités principales de cppcli



  • Déclaration déclarative des commandes — chaque commande est décrite comme une classe séparée ou une fonction lambda.
  • Analyse automatique des arguments — prise en charge des arguments positionnels, nommés et des drapeaux.
  • Sortie colorée et formatage — utilitaires intégrés pour la sortie stylisée (couleurs ANSI, tableaux, barres de progression).
  • Validation et aide — génération automatique des messages d'aide et vérification des arguments obligatoires.
  • Extensibilité — prise en charge des types d'arguments personnalisés et des middleware.


Démarrage rapide : installation et premier exemple



cppcli est distribué comme une bibliothèque header-only. Pour l'installer, clonez le dépôt ou utilisez CMake FetchContent. Intégration dans le projet :



#include <cppcli/cli.h>#include <iostream>

int main(int argc, char* argv[]) { cppcli::App app("Mon application", "1.0.0"); app.run(argc, argv); return 0;}


Ceci est une structure minimale. Ajoutons maintenant une commande greet qui accepte un nom d'utilisateur.



Exemple : commande avec arguments



#include <cppcli/cli.h>

int main(int argc, char* argv[]) { cppcli::App app("Greeter", "1.0.0");

app.command("greet", "Salue l'utilisateur") .argument<std::string>("name", "Nom de l'utilisateur") .action([](const cppcli::Args& args) { std::string name = args.get<std::string>("name"); std::cout << "Bonjour, " << name << " !"; });

app.run(argc, argv); return 0;}


Exécution : ./app greet Jean affichera Bonjour, Jean !. Si l'argument n'est pas fourni, cppcli affichera une erreur et l'aide.



Drapeaux et paramètres optionnels



Ajoutons un drapeau --formel pour un salut formel :



app.command("greet", "Salue l'utilisateur")    .argument<std::string>("name", "Nom")    .flag("--formel", "-f", "Salutation formelle")    .action([](const cppcli::Args& args) {        std::string name = args.get<std::string>("name");        bool formel = args.get<bool>("formel");        if (formel)            std::cout << "Bonjour, " << name << " !";        else            std::cout << "Salut, " << name << " !";    });


Maintenant, ./app greet Jean --formel affichera Bonjour, Jean !.



Commandes imbriquées et sous-commandes



cppcli prend en charge une structure arborescente de commandes. Par exemple, pour un utilitaire de gestion de projets :



app.command("projet", "Gestion des projets")    .command("creer", "Créer un projet")        .argument<std::string>("nom", "Nom du projet")        .action([](const cppcli::Args& args) {            std::cout << "Projet créé : " << args.get<std::string>("nom") << "";        })    .command("supprimer", "Supprimer un projet")        .argument<std::string>("nom", "Nom du projet")        .flag("--force", "Sans confirmation")        .action([](const cppcli::Args& args) {            // logique de suppression        });


Appel : ./app projet

Recommendations