有没有一种简单的方法可以将帮助选项与“真实”程序选项分开?事实上,是否可以定义选项层次结构,例如BNF:
options := help_options | program_options
help_options := '-h'
program_options := '-m1' mode1options | '-m2' mode2options
mode1options := number
...
还是有更好的方法来实现这一目标?我应该恢复精神吗?
有没有一种简单的方法可以将帮助选项与“真实”程序选项分开?事实上,是否可以定义选项层次结构,例如BNF:
options := help_options | program_options
help_options := '-h'
program_options := '-m1' mode1options | '-m2' mode2options
mode1options := number
...
还是有更好的方法来实现这一目标?我应该恢复精神吗?
该文档描述了如何在选项组和隐藏选项标题下分隔选项。它演示了定义多个options_description
对象,然后使用一个all
组来解析命令行,但使用一个visible
组来显示文档:
// Declare an options description instance which will include
// all the options
options_description all("Allowed options");
all.add(general).add(gui).add(backend);
// Declare an options description instance which will be shown
// to the user
options_description visible("Allowed options");
visible.add(general).add(gui);
variables_map vm;
store(parse_command_line(ac, av, all), vm);
if (vm.count("help"))
{
cout << visible;
return 0;
}
尽管 Program_options 库允许您自定义某些语法(请参阅非常规语法和自定义验证器),但它不提供定义自定义语法的方法。如果要定义命令行的语法,请使用不同的工具。