The Command Line Parser (clparser) makes it easy to write user-friendly command-line interfaces for applications and scientific or computational programs. It comes in two flavors: argp and free-style. The argp interface is a front-end to argp.
The program declares an instance of the C++ class CmdLineArgs and defines the required arguments. Then a call to the method CmdLineArgs::parse() parses the user supplied arguments, which are passed as arguments to the main() function, placing user supplied values to program variables and/or executing user defined actions. CmdLineArgs automatically generates help and usage messages, and issues warnings and errors when necessary.
Clparser is an alternative to getopt and argp, but it is much easier to use and makes for faster and more efficient development.
The user can specify:
- Integer, floating-point, string and boolean data.
For example, assuming our program is myprog
, the command line
$ myprog -max_num_iter=32 -temperature=+1.e-2 -where="right boundary"
specifies an integer (-max_num_iter
), a floating point number (-temperature
) and a string. The following command line specifies boolean values:
$ myprog -use_emulation -extra-precision=no
Clparser will take care of collecting all these values and placing them automatically to the associated program variables.
- Selectors or offsets in arrays
Assume in our program we have the following array
const char *fruits[] = {"orange", "apple", "grape", "peach", "melon"};
int ofs = 1; // default selection is apple
and we'd like to let the user select an o 7AE5 bject. This is specified on the command line as follows:
$ myprog -peach
Clparser will automatically set the value of ofs
to 3.
-
Sets of mutually exclusive options (groups).
-
Actions. They are command line specifications which trigger the execution of code in the program.
-
Sources and targets. They are files, directories and other string arguments. The program is responsible for their interpretation. Clparser collects them automatically into a
vector
.
CmdLineArgs was designed with minimal learning requirements in mind. A tutorial is available, and many examples are in the examples folder.
In the source
directory (the directory where clparser
was decompressed or downloaded; it contains the configure
script) issue
$ ./configure
or ./configure --prefix=/my/clparser/path
if you want to install clparser into a non-system path. To compile also the examples configure with
$ ./configure --prefix=/my/clparser/path --enable-examples=yes
Run ./configure --help
to see a list of available options.
After the configuration step run
$ make
$ make install-strip
Replace make install-strip
with make install
if you want to keep debugging information.
Compile your program and link it to the appropriate clparser library. For more details, look at the tutorial.
As another option, you can copy the files clparser.hpp
and clparser.cpp
(or clparser_argp.cpp
) to the appropriate subdirectories of your project and incorporate them in your Makefile
. Don't forget to define -DARGP_INTERFACE
if you compile for the argp interface.
For bug reports, feature requests, improvement suggestions and comments, please contact the author at apostol.faliagas@gmail.com.