poaflocParser Of Arguments For Lines Of Commands |
git clone git://git.dimitrijedobrota.com/poafloc.git |
Log | Files | Refs | README | LICENSE | HACKING | CONTRIBUTING | CODE_OF_CONDUCT | BUILDING | |
commit | fce2a3185e54b0777e79090200f3dc6824a48d08 |
parent | 31ee3b7c839842a6969085a8c52d9a83f225457b |
author | Dimitrije Dobrota <mail@dimitrijedobrota.com> |
date | Fri, 14 Jun 2024 17:59:04 +0200 |
Version 1.0
Diffstat:A | README.md | | | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
1 files changed, 81 insertions(+), 0 deletions(-)
diff --git a/README.md b/README.md
@@ -0,0 +1,81 @@
# Poafloc
Command-line argument parser for C and C++ written in C++20
## Description
This project is heavily inspired by GNU argp and the initial goal was to have
a drop in replacement. I've managed to implement most of the features I plan
on using, but there is still space for future improvements, maybe even in
other directions.
The main motivation behind this project is gaining an in depth understanding
of all of the syntax rules of command line arguments, to be used for all of
the UNIX utilities.
This project included a few challenges in both the design and implementation.
There was a lot of experimentation with interface that works for both C and
C++, as well as having a single library that provides bindings and works with
both languages simultaneously. There were a lot of caveats and edge cases to
be understood first, and later implemented.
## Getting Started
### Dependencies
- Linux
* CMake 3.25.2 or latter
* Compiler with C++20 support (tested: clang 16.0.5, gcc 13.2.0)
- Windows
* Not tested
### Installing
* Clone the repo
* Make a build folder and cd into it
* Run `cmake <path to cloned repo>` to set up the build scripts [Release mode]
* Run `make` to build the project
* Run `cmake --build . --target install` to install the project
### Using the library
- Cmake:
* Add `find_package(poafloc 1 CONFIG REQUIRED)` to the top level CMakeLists.txt
* Add `poafloc` to `target_link_libraries` of the desired target
- Other:
* Link against `poafloc` with `-lpoafloc`
### Usage
> Please reference demo folder for relevant usage example.
### Help
Refer to [GNU argp documentation](https://www.gnu.org/software/libc/manual/html_node/Argp.html)
## Version History
- 1.0
* Initial Release
## License
This project is licensed under the MIT License - see the LICENSE.md file for details
## Acknowledgments
Inspiration, code snippets, etc.
* [GNU argp documentation](https://www.gnu.org/software/libc/manual/html_node/Argp.html)
* [Step-by-Step into Argp](http://nongnu.askapache.com/argpbook/step-by-step-into-argp.pdf)
* [ericonr/argp-standalone](https://github.com/ericonr/argp-standalone)