Welcome to Argo!ΒΆ

Argo is a single header C++11 library for argument parsing like a boss. It is light-weight, flexible, easy-to-use, and has out-of-the-box support for:

  • Long-hand (--foo) and short-hand notation (-f)
  • Options, toggles, flags, and positional arguments
  • Automatic short-hand generation and guessing of undefined short-hands
  • Automatic generation of --help, --version options
  • Automatic dashing of names (foo_bar to foo-bar)
  • Automatic type conversions for basic types, and easily extensible for custom types
  • Automatic storage for basic types, including STL containers
  • Support for std::optional (C++17, when setting -DARGO_ENABLE_STD_OPTIONAL=1)
  • Advanced parsing:
    • Support for various flavours, such as --foo 1 2 and --foo=1,2 and --foo=1 --foo=2 and --foo 1 --foo 2 or any combination thereof
    • Understanding that --debug false and --no-debug are equivalent
  • Grouping of options, including inclusive and exclusive groups
  • Required and optional arguments
  • Cardinality: fixed number, one or more, zero or more
  • Response files: configuration files that use the same syntax as the command line
  • Helpful error messages
  • Beautiful and responsive output

Check out the Tutorial to quickly get started.