2012-11-05 66 views
1

我有boost::program_options的問題。我有一個由幾個子組件組成的軟件,每個子組件都可以聲明一些選項在命令行上傳遞。我想堅持以下流程:如何避免boost :: program_options中不存在的參數錯誤?

  1. 配置的boost :: program_options一些選項
  2. 匹配選項
  3. 使用匹配選項來初始化子
  4. 子組件構造申報更多的選擇
  5. 比賽選項再次配置組件

因此,在某個執行時刻(2),我只有聲明瞭一些選項,但實際上調用了整套程序(包括將在3中聲明的程序),導致一些unrecognised option '...'錯誤。我可以捕捉這些,但解析將停止。我曾嘗試使用多個options_description組來處理這個問題,我還查看了命令行樣式(style_t)以查看是否允許其中一個忽略不匹配的參數。你有更多的想法嗎?

感謝

回答

1

問題解決了,很抱歉打擾你,但是這可能會來方便的人。除了使用parse_command_line

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

呼叫command_line_parserrun方法顯式調用allow_unregistered

auto parsed = command_line_parser(argc, argv).options(opts).allow_unregistered().run(); 
後的