Frameworks CLI pour C++ : écrivez des applications console rapidement et facilement

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

Frameworks CLI pour C++ : écrivez des applications console rapidement et facilement



Créer une interface de ligne de commande (CLI) de qualité est une partie importante du développement en C++. L'analyse manuelle des arguments via argc/argv et getopt devient rapidement lourde et sujette aux erreurs, surtout avec un grand nombre d'options. Des bibliothèques spécialisées — les frameworks CLI — viennent à la rescousse. Elles automatisent l'analyse, la génération d'aide, la vérification des types et aident à écrire un code plus propre et plus maintenable.



Dans cet article, nous examinerons les trois frameworks CLI les plus populaires et modernes pour C++ : CLI11, cxxopts et argparse. Vous découvrirez leurs points forts, verrez des exemples de code et pourrez choisir l'outil adapté à votre projet.



1. CLI11 — le standard moderne



CLI11 est une bibliothèque header-only qui est à juste titre considérée comme l'une des meilleures solutions pour C++11 et versions ultérieures. Elle offre une API intuitive, une validation puissante et une génération automatique d'aide.



Fonctionnalités clés :

  • Header-only : ne nécessite pas de compilation — il suffit d'inclure le fichier d'en-tête.
  • Aide automatique : les drapeaux -h et --help fonctionnent immédiatement.
  • Validation : validateurs intégrés et personnalisés pour les arguments (plage, expression régulière, existence de fichier).
  • Prise en charge des sous-commandes : idéal pour les utilitaires complexes (comme git ou docker).
  • Formatage : sortie d'aide personnalisable.


Exemple d'utilisation de CLI11 :

Une application simple qui accepte un nom et un drapeau de salutation optionnel :

#include <CLI/CLI.hpp>#include <iostream>

int main(int argc, char** argv) { CLI::App app{"Démonstration de CLI11"};

std::string name; bool greet = false;

app.add_option("-n,--name", name, "Votre nom")->required(); app.add_flag("-g,--greet", greet, "Afficher la salutation");

CLI11_PARSE(app, argc, argv);

std::cout << "Bonjour, " << name << "!" << std::endl; if (greet) { std::cout << "Bonne journée !" << std::endl; } return 0;}

Comment ça fonctionne : La bibliothèque analyse elle-même les arguments, vérifie le caractère obligatoire de l'option --name et génère une aide lors de l'appel ./app --help.



2. cxxopts — simplicité et légèreté



cxxopts est une autre bibliothèque header-only, axée sur le minimalisme et la simplicité. Elle convient parfaitement aux petits utilitaires où les sous-commandes ne sont pas nécessaires, mais où la lisibilité du code est importante.



Fonctionnalités clés :

  • API simple : ajout d'options par chaînage d'appels.
  • Conversion automatique des types : int, double, string et autres.
  • Prise en charge des arguments positionnels.
  • Préfixes personnalisables : vous pouvez utiliser - ou --.


Exemple d'utilisation de cxxopts :

#include <cxxopts.hpp>#include <iostream>

int main(int argc, char** argv) { cxxopts::Options options("myapp", "Exemple cxxopts");

options.add_options() ("f,file", "Nom du fichier", cxxopts::value<std::string>()) ("v,verbose", "Sortie détaillée", cxxopts::value<bool>()->default_value("false")) ("h,help", "Afficher l'aide");

auto result = options.parse(argc, argv);

if (result.count("help")) { std::cout << options.help() << std::endl;

Recommendations