假设我有一个可执行文件(在 mac、win 和 linux 上运行)
a.out [-a] [-b] [-r -i <file> -o <file> -t <double> -n <int> ]
其中参数 in[ ]
表示它是可选的。但是,如果-r
设置了最后一个参数,那么-i
, -o
, -t
,-n
也必须提供。
有很多好的 C++ 库可以解析命令行参数,例如 gflags ( http://code.google.com/p/gflags/ )、tclap ( http://tclap.sourceforge.net/ )、 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允许对参数进行异或运算,例如,一个-a
或一个-b
被允许,但不能两者兼而有之。所以,在那个术语中,参数的 AND 会很好。
有人知道可以做到这一点的多功能、轻量级和跨平台库吗?