A lightweight Command Line Argument Parser library using C++20.
Source
https://github.com/karnkaul/clap
Features
Options are set up by passing a binding reference and the relevant metadata. Bindings are set as options are encountered during parsing. Positional arguments are supported.
struct {
bool debug{};
int log_level{3};
struct {
std::string field{"name"};
bool enabled{};
} sort{};
} input{};
options
// bind an option that's a boolean flag
.flag(input.debug, "d,debug", "enable debugging")
// bind an option that requires an int argument
.required(input.log_level, "log-level", "set the log level", "3")
// bind an option that takes an optional string argument
.optional(input.sort.field, input.sort.enabled, "s,sort",
"sort by", "name|date");
auto result = options.parse(argc, argv);
if (clap::should_quit(result)) {
return clap::return_code(result);
}