1

に問題がありboost::program_optionsます。私はいくつかのサブコンポーネントで構成されたソフトウェアを持っています。各サブコンポーネントは、コマンドラインで渡されるいくつかのオプションを宣言できます。私は次の流れに固執したいと思います:

  1. いくつかのオプションを使用してboost::program_optionsを構成します
  2. マッチオプション
  3. 一致したオプションを使用してサブコンポーネントを初期化します
  4. サブコンポーネントコンストラクターは、より多くのオプションを宣言します
  5. オプションを再度一致させてコンポーネントを構成する

したがって、実行の特定の瞬間(2)で、私はいくつかのオプションのみを宣言しましたが、プログラムは実際にはそれらのセット全体(3で宣言されるものを含む)で呼び出され、多くのunrecognised option '...'エラーが発生します。それらをキャッチすることはできますが、とにかく解析は停止します。複数のoptions_descriptionグループでそれを処理しようとしましたが、コマンドラインスタイル(style_t)も調べて、そのうちの1つが一致しない引数を無視できるかどうかを確認しました。他にアイデアはありますか?

ありがとう

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 に答える