Commit 69ad7856877aa136d00865c90711b4a69048df3f
Committed by
GitHub
1 parent
53e53286
Link to comparison
Showing
1 changed file
with
5 additions
and
3 deletions
README.md
| @@ -29,11 +29,12 @@ An acceptable CLI parser library should be all of the following: | @@ -29,11 +29,12 @@ An acceptable CLI parser library should be all of the following: | ||
| 29 | * Work on Linux, macOS, and Windows. | 29 | * Work on Linux, macOS, and Windows. |
| 30 | * Well tested using [Travis] (Linux and macOS) and [AppVeyor] (Windows). "Well" is defined as having good coverage measured by [CodeCov]. | 30 | * Well tested using [Travis] (Linux and macOS) and [AppVeyor] (Windows). "Well" is defined as having good coverage measured by [CodeCov]. |
| 31 | * Clear help printing. | 31 | * Clear help printing. |
| 32 | +* Nice error messages. | ||
| 32 | * Standard shell idioms supported naturally, like grouping flags, a positional separator, etc. | 33 | * Standard shell idioms supported naturally, like grouping flags, a positional separator, etc. |
| 33 | * Easy to execute, with help, parse errors, etc. providing correct exit and details. | 34 | * Easy to execute, with help, parse errors, etc. providing correct exit and details. |
| 34 | * Easy to extend as part of a framework that provides "applications" to users. | 35 | * Easy to extend as part of a framework that provides "applications" to users. |
| 35 | * Usable subcommand syntax, with support for multiple subcommands, nested subcommands, and optional fallthrough (explained later). | 36 | * Usable subcommand syntax, with support for multiple subcommands, nested subcommands, and optional fallthrough (explained later). |
| 36 | -* Ability to add a configuration file (`ini` format). | 37 | +* Ability to add a configuration file (`ini` format), and produce it as well. |
| 37 | * Produce real values that can be used directly in code, not something you have pay compute time to look up, for HPC applications. | 38 | * Produce real values that can be used directly in code, not something you have pay compute time to look up, for HPC applications. |
| 38 | * Work with standard types, simple custom types, and extendible to exotic types. | 39 | * Work with standard types, simple custom types, and extendible to exotic types. |
| 39 | * Permissively licensed. | 40 | * Permissively licensed. |
| @@ -42,7 +43,7 @@ An acceptable CLI parser library should be all of the following: | @@ -42,7 +43,7 @@ An acceptable CLI parser library should be all of the following: | ||
| 42 | 43 | ||
| 43 | | Library | My biased opinion | | 44 | | Library | My biased opinion | |
| 44 | |---------|-------------------| | 45 | |---------|-------------------| |
| 45 | -| [Boost Program Options] | A great library if you already depend on Boost, but its pre-C++11 syntax is really odd and setting up the correct call in the main function is poorly documented (and is nearly a page of code). A simple wrapper for the Boost library was originally developed, but was discarded as CLI11 became more powerful. The idea of capturing a value and setting it originated with Boost PO. | | 46 | +| [Boost Program Options] | A great library if you already depend on Boost, but its pre-C++11 syntax is really odd and setting up the correct call in the main function is poorly documented (and is nearly a page of code). A simple wrapper for the Boost library was originally developed, but was discarded as CLI11 became more powerful. The idea of capturing a value and setting it originated with Boost PO. [See this comparison.][cli11-po-compare] | |
| 46 | | [The Lean Mean C++ Option Parser] | One header file is great, but the syntax is atrocious, in my opinion. It was quite impractical to wrap the syntax or to use in a complex project. It seems to handle standard parsing quite well. | | 47 | | [The Lean Mean C++ Option Parser] | One header file is great, but the syntax is atrocious, in my opinion. It was quite impractical to wrap the syntax or to use in a complex project. It seems to handle standard parsing quite well. | |
| 47 | | [TCLAP] | The not-quite-standard command line parsing causes common shortcuts to fail. It also seems to be poorly supported, with only minimal bugfixes accepted. Header only, but in quite a few files. Has not managed to get enough support to move to GitHub yet. No subcommands. Produces wrapped values. | | 48 | | [TCLAP] | The not-quite-standard command line parsing causes common shortcuts to fail. It also seems to be poorly supported, with only minimal bugfixes accepted. Header only, but in quite a few files. Has not managed to get enough support to move to GitHub yet. No subcommands. Produces wrapped values. | |
| 48 | | [Cxxopts] | C++11, single file, and nice CMake support, but requires regex, therefore GCC 4.8 (CentOS 7 default) does not work. Syntax closely based on Boost PO, so not ideal but familiar. | | 49 | | [Cxxopts] | C++11, single file, and nice CMake support, but requires regex, therefore GCC 4.8 (CentOS 7 default) does not work. Syntax closely based on Boost PO, so not ideal but familiar. | |
| @@ -416,4 +417,5 @@ CLI11 was developed at the [University of Cincinnati] to support of the [GooFit] | @@ -416,4 +417,5 @@ CLI11 was developed at the [University of Cincinnati] to support of the [GooFit] | ||
| 416 | [Version 1.3 post]: https://iscinumpy.gitlab.io/post/announcing-cli11-13/ | 417 | [Version 1.3 post]: https://iscinumpy.gitlab.io/post/announcing-cli11-13/ |
| 417 | [wandbox-online]: https://img.shields.io/badge/try%20it-online-orange.svg | 418 | [wandbox-online]: https://img.shields.io/badge/try%20it-online-orange.svg |
| 418 | [wandbox-link]: https://wandbox.org/permlink/7eh3iURD5On64u30 | 419 | [wandbox-link]: https://wandbox.org/permlink/7eh3iURD5On64u30 |
| 419 | -[releases-badge]: https://img.shields.io/github/release/CLIUtils/CLI11.svg | 420 | +[releases-badge]: https://img.shields.io/github/release/CLIUtils/CLI11.svg |
| 421 | +[cli11-po-compare]: https://iscinumpy.gitlab.io/post/comparing-cli11-and-boostpo/ |