私はC++でプログラムを書いています。これは、最初にいくつかのセットアップコードを含み、最後にanalisysコードを含むいくつかのベンチマークのラッパーです。
最大2つのベンチマークを並行して実行したいと思います。これらの元のコマンドラインは次のとおりです。
/path0/benchmark0 -switch0 -switch1 -switch2
/path1/benchmark1 -arg0 -arg1 -arg2 -arg4
そして、これらをラッパーのコマンドラインに配置したいと思います。
wrapper -setup_arg0 -setup_arg1 -analysis_arg0 --command0 /path0/benchmark0 -switch0 -switch1 -switch2 --command1 /path1/benchmark1 -arg0 -arg1 -arg2 -arg4
元のコマンドラインを含む、とstd::vector<std::string>
のそれぞれに1つずつ、合計2つのを取得したい場合。これは私がそれをしている方法です(を使用して):command0
command1
boost::program_options
("command0", po::value<std::vector< std::string> >(&command0)->multitoken(), "command line for thread 0")
("command1", po::value<std::vector< std::string> >(&command1)->multitoken(), "command line for thread 1")
これは基本的に機能します。-
ただし、ベンチマークの引数が(私が見たほとんどのプログラムのほとんどのスイッチのように)で始まる場合、またはprogram_options
の下にグループ化する必要があることを認識していないため、ラッパーのスイッチの一部としてそれらを解析しようとします。command0
command1
program_options
それをサポートしていますか?もしそうなら、どのように?
例:
私が働いているところでは、次のようにマルチトークンを「終了」することによってこれを行うための規則があります。
wrapper <snip> --command0 /path0/benchmark0 -switch0 -switch1 -switch2 -command0-
(この例では、で終了--command0
しまし-command0-
た。)
どうすればprogram_options
このように処理できますか?