Go to file
2015-09-28 12:53:26 +10:00
src positional arguments parse into multiple options 2015-09-25 16:49:06 +10:00
.gitignore add gitignore 2014-09-27 17:05:23 +10:00
biicode.conf Update biicode.conf 2015-03-18 17:33:01 +01:00
CMakeLists.txt Update CMakeLists.txt 2015-03-18 17:31:29 +01:00
INSTALL add install file 2014-10-13 09:20:20 +11:00
LICENSE adds a simple license file 2014-10-14 11:40:16 +02:00
README.md Rename README to README.md 2015-09-28 12:53:26 +10:00

== Quick start ==

This is a lightweight C++ option parser library, supporting the standard GNU style syntax for options.

Options can be given as:

--long
--long=argument
--long argument
-a
-ab
-abc argument

where c takes an argument, but a and b do not.

How to use:

#include <cxxopts.hpp>

Create a cxxopts::Options instance.

cxxopts::Options options;

Then use add_options.

options.add_options()
  ("d,debug", "Enable debugging")
  ("f,file", "File name", cxxopts::value<std::string>())

Options can be declared with a short and/or long option. A description must be provided. The third argument is the value, if omitted it is boolean. Any type can be given as long as it can be parsed, with operator>>.

To parse the command line do:

options.parse(argc, argv);

To retrieve an option use options.count("option") to get the number of times it appeared, and

options["opt"].as<type>()

to get its value. If "opt" doesn't exist, or isn't of the right type, then an exception will be thrown.

=== Positional Arguments ===

Positional arguments can be optionally parsed into one or more options. To set up positional arguments, call

options.parse_positional({"first", "second", "last"})

where "last" should be the name of an option with a container type, and the others should have a single value.

== Linking ==

This is a header only library.

== Requirements ==

The only build requirement is a C++ compiler that supports C++11 regular expressions. For example GCC >= 4.9 or clang with libc++.

== TODO list ==

  • Allow unrecognised options.
  • Various help strings.
  • Unicode aware for help strings.