gengetopt 

This program generates a C function that uses getopt_long function
to parse the command line options, validate them and fill a struct.

Usage: gengetopt [OPTION]...

  -h, --help                    Print help and exit
      --detailed-help           Print help, including all details and hidden
                                  options, and exit
      --full-help               Print help, including hidden options, and exit
  -V, --version                 Print version and exit

Main options:

  -i, --input=filename          input file (default std input)
  -f, --func-name=name          name of generated function
                                  (default=`cmdline_parser')
  -a, --arg-struct-name=name    name of generated args info struct
                                  (default=`gengetopt_args_info')
  -F, --file-name=name          name of generated file  (default=`cmdline')
      --output-dir=path         output directory
      --header-output-dir=path  header output directory
      --src-output-dir=path     source output directory
  -c, --c-extension=ext         extension of c file  (default=`c')
  -H, --header-extension=ext    extension of header file  (default=`h')
  -l, --long-help               long usage line in help
      --default-optional        by default, an option is considered optional if
                                  not specified otherwise
  -u, --unnamed-opts[=STRING]   accept options without names (e.g., file names)
                                  (default=`FILE')

The parser generated is thought to be used to parse the command line arguments.
However, you can also generate parsers for configuration files, or strings that
contain the arguments to parse, by using the following two options.

  -C, --conf-parser             generate a config file parser
  -S, --string-parser           generate a string parser (the string contains
                                  the command line)

Additional options:
  -G, --include-getopt          adds the code for getopt_long in the generated
                                  C file
  -n, --no-handle-help          do not handle --help|-h automatically
      --no-help                 do not add --help|-h automatically
  -N, --no-handle-version       do not handle --version|-V automatically
      --no-version              do not add --version|-V automatically
  -e, --no-handle-error         do not exit on errors
      --show-required[=STRING]  in the output of help will specify which
                                  options are mandatory, by using the optional
                                  passed string  (default=`(mandatory)')
      --strict-hidden           completely hide hidden options
  -g, --gen-version             put gengetopt version in the generated file
                                  (default=on)
      --set-package=STRING      set the package name (override package defined
                                  in the .ggo file)
      --set-version=STRING      set the version number (override version
                                  defined in the .ggo file)
      --show-help               show the output of --help instead of generating
                                  code
      --show-full-help          show the output of --full-help (i.e., including
                                  hidden options) instead of generating code
      --show-detailed-help      show the output of --detailed-help (i.e.,
                                  including details and hidden options) instead
                                  of generating code
      --show-version            show the output of --version instead of
                                  generating code

Please refer to the info manual for further explanations.
