假设我有一个可执行程序(运行在mac、win和linux上)
a.out [-a] [-b] [-r -i <file> -o <file> -t <double> -n <int> ]
在这里,方括号[ ]
中的参数表示可选。但是,如果设置了最后一个参数-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
,但不能同时使用两者。因此,在这方面实现参数的与操作会很好。
有没有人知道一个多功能、轻量级且跨平台的库可以做到这一点?