2011-11-15 8 views
5

「本当の」プログラムオプションからヘルプオプションを簡単に分離する方法はありますか?実際、オプションの階層構造を定義することは可能ですか?boost program_options:ヘルプと有意義なオプション

options := help_options | program_options 
help_options := '-h' 
program_options := '-m1' mode1options | '-m2' mode2options 
mode1options := number 
... 

これを実現するためのより良い方法はありますか?私は精神に戻るべきですか?

答えて

7

この文書では、Option Groups and Hidden Options見出しの下にあるオプションを区切る方法について説明しています。これは、ドキュメントを表示するための複数のoptions_descriptionオブジェクトを定義して、コマンドラインを解析するためallグループを使用しますが、visibleグループを示しています。

// Declare an options description instance which will include 
// all the options 
options_description all("Allowed options"); 
all.add(general).add(gui).add(backend); 

// Declare an options description instance which will be shown 
// to the user 
options_description visible("Allowed options"); 
visible.add(general).add(gui); 

variables_map vm; 
store(parse_command_line(ac, av, all), vm); 

if (vm.count("help")) 
{ 
    cout << visible; 
    return 0; 
} 

Program_optionsライブラリを使用すると、構文の一部をカスタマイズできますが、(Non-conventional SyntaxCustom Validatorsを参照してください)カスタム文法を定義する方法はありません。コマンドラインの文法を定義する場合は、別のツールを使用します。

+0

ありがとうございました!どういうわけか私はこのハウツーを読みました... – xtofl

関連する問題