2011-02-01 52 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選項,則觸發錯誤)
相關問題