2011-02-01 49 views
2


假设我有一些称为modeA modeB common的选项组。我将在{}内引用这些内容 - 即{common}扩展到该组中描述的任何选项。使用boost program_options,根据一个必需的'模式'选项选择多组选项

我希望能够执行下面的命令行

command A {common} {modeA} 
command B {common} {modeB} 

从模式和普通组选项的位置并不重要,可以交织在一起
下会失败

command A {modeB} /* Wrong option group for this mode */ 
command A B   /* A and B not allowed */ 

因此,目标是

  • 必须发生和是集合A中的一个的选项|乙
    • 如果可能被迫成为所述第一参数
  • 整个组解析为确定或基于上述强制参数忽略

回答

0

不是一个优雅的解决方案,但...
将选项分为至少三组,modeA/modeB和其他选项。其他人包含帮助和模式optons。使用自定义验证的方式来限制的选项(带有默认),则

  • 将所有组和解析
  • 行动--help如果需要的话(解释所有模式/选项)
  • 确定模式
  • 使新组组合留出不需要的模式,并重新解析

我觉得必须有一个巧妙方式

0

我正在努力实现这个为好,我可以计算最好是

  1. 首先分析了“核心”的选项,但允许识别的选项
  2. 确定模式
  3. 通过collect_unrecognized收集识别的选项
  4. 解析无法识别的选项与禁止无法识别的模式选项(因此如果在模式A中使用模式B选项,则触发错误)
相关问题