実行可能ファイルがあるとします (mac、win、および linux で実行)
a.out [-a] [-b] [-r -i <file> -o <file> -t <double> -n <int> ]
の引数は、[ ]
オプションであることを意味します。ただし、最後の引数-r
が設定されている場合-i
は-o
、、、、-t
および-n
も指定する必要があります。
コマンドライン引数を解析するための優れた C++ライブラリがたくさんあります。 simpleopt( http://code.jellycan.com/simpleopt/ )、boost.program_options ( http://www.boost.org/doc/libs/1_52_0/doc/html/program_options.html )など。これらの引数間の条件付き関係を直接エンコードできるものがあれば、エラー処理を手動でコーディングする必要はありません
if ( argR.isSet() && ( ! argI.isSet() || ! argO.isSet() || ... ) ) ...
を手動で設定します--help
。
ライブラリtclapでは、引数の XOR を使用できます。たとえば、 または のいずれ-a
か-b
は許可されますが、両方は許可されません。したがって、その用語では、引数の AND が適切です。
それを行うことができる、用途が広く、軽量で、クロスプラットフォームのライブラリを知っている人はいますか?