So many different command line processing libraries out there and none of them just work. Some bring their whole extended family of related and unrelated external dependencies (yes, I'm looking at you Boost). Some require quirky syntax and/or very verbose setups that sacrifice simplicity for the generation of a cute usage message and validation. Many come to dominate your main() file and yet others do not build on multiple platforms - for some even their own tests and trivial usage cause crashes on some systems. Argh! If you're writing a highly-sophisticated command line tool, then Boost.Program_options and its kind might give you many advanced options. However, if you need to get up and running quickly, effectively, and with minimal fuss, give the single header-file argh a try.
Features
- Minimalistic but expressive
- No exceptions thrown for failures
- Conversion to typed variables happens (via std::istream >>) on the user side after the parsing phase
- You don't pay for what you don't use
- Single header file
- No non-std dependencies
- Liberal BSD license