Dire che ho un file eseguibile (in esecuzione su Mac, Win e Linux)parsing "condizionale" di argomenti della riga di comando
a.out [-a] [-b] [-r -i <file> -o <file> -t <double> -n <int> ]
dove un argomento in [ ]
significa che è facoltativa. Tuttavia, se è stato impostato l'ultimo argomento -r
, è necessario fornire anche -i
, -o
, -t
e -n
.
Esistono molte buone librerie C++ per analizzare gli argomenti della riga di comando, ad es. gflags(), simpleopt (http://code.jellycan.com/simpleopt/), boost.program_options (http://www.boost.org/doc/libs/1_52_0/doc/html/program_options.html), ecc. Ma mi chiedevo se ce n'è uno che consente di codificare queste relazioni condizionali tra argomenti direttamente, senza codificare manualmente la gestione degli errori
if (argR.isSet() && (! argI.isSet() || ! argO.isSet() || ...)) ...
e impostazione manuale di --help
.
La libreria tclap consente di argomenti XOR, ad es. o -a
o -b
è consentito ma non entrambi. Quindi, in quella terminologia, un AND per argomenti sarebbe bello.
Qualcuno conosce una libreria versatile, leggera e multipiattaforma che può farlo?
[Qui] (http://www.boost.org/libs/program_options/example/real.cpp) è l'esempio di Boost.Program_options che gestisce opzioni in conflitto e dipendenti. –