1

我有麻烦boost::program_options。我有一个由几个子组件组成的软件,每个子组件都可以声明一些要在命令行上传递的选项。我想坚持以下流程:

  1. 使用一些选项配置 boost::program_options
  2. 匹配选项
  3. 使用匹配的选项来初始化子组件
  4. 子组件构造函数声明更多选项
  5. 再次匹配选项以配置组件

所以,在执行的某个时刻(2),我只声明了一些选项,但程序实际上是用它们的全部集合(包括将在 3 中声明的那些)调用的,导致了一些unrecognised option '...'错误. 我可以抓住那些,但解析无论如何都会停止。我尝试使用多个options_description组来处理这个问题,我还研究了命令行样式 ( style_t) 以查看其中一个是否允许忽略不匹配的参数。你有更多的想法吗?

谢谢

4

1 回答 1

1

问题已解决,很抱歉打扰您,但这对某人来说可能会派上用场。而不是使用parse_command_line

auto parsed = parse_command_line(argc, argv, opts);

调用后显式调用command_line_parser的方法runallow_unregistered

auto parsed = command_line_parser(argc, argv).options(opts).allow_unregistered().run();
于 2012-11-05T09:26:28.817 回答