https://github.com/tychosoft/moderncli
C++17 header only library for common uses.
https://github.com/tychosoft/moderncli
cpp cross-platform cryptography header-only lock-free logging-library multithreading serial socket-programming ssl string-manipulation sync
Last synced: 12 months ago
JSON representation
C++17 header only library for common uses.
- Host: GitHub
- URL: https://github.com/tychosoft/moderncli
- Owner: tychosoft
- License: mit
- Created: 2024-06-16T13:58:47.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2025-06-27T20:27:11.000Z (12 months ago)
- Last Synced: 2025-06-27T21:30:02.703Z (12 months ago)
- Topics: cpp, cross-platform, cryptography, header-only, lock-free, logging-library, multithreading, serial, socket-programming, ssl, string-manipulation, sync
- Language: C++
- Homepage: http://www.tychosoft.com/tychosoft/moderncli
- Size: 567 KB
- Stars: 1
- Watchers: 0
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
Awesome Lists containing this project
README
# About ModernCLI
Moderncli is a package that collects and centralizes testing for many of my
inline C++ header libraries, which I had duplicated or vendored in other
packages in the past. These headers are being gathered under a common package
of their own that can then be installed as a core dependency. Hence, one
interpretation for this package is "Modern C++" Library Interfaces. Moderncli
is meant to support C++ 17 thru C++23 with consistent source behavior.
Moderncli headers are meant to be usable stand-alone and provide generic
cross-platform low level wrappers around common system features and services.
This makes it easier to include just what you need without drawing in
additional headers you may not be using. This also makes it easy to substitute
other common C++ libraries without having to include duplication functionality
from moderncli.
Moderncli requires CMake to build the testing framework. It should build and
work with GCC (9 or later), with Clang (14? or later), and MSVC. Besides
GNU/Linux and BSD systems, Moderncli is portable to and can support the MingW
platform target as installed by Debian when selecting posix runtime, and even
native MS Visual Studio builds. The minimum requirement is a C++17 compiler (or
later) that supports the C++ filesystem header and runtime library.
## Dependencies
Moderncli and applications also often make use of the C++ library libfmt. This
allows C++17 applications to use modern string and print formatting operations
like from C++23 and later. If you are building applications for C++20 or later,
or you do not also use the moderncli print header for output, you do not need
to use or link with libfmt.
Moderncli also uses openssl for crypto operations and ssl streams in any crypto
namespace related headers. Generally, if your not using secure streams, but
does use a moderncli crypto header (sign, cipher, digests, bignum, and random),
you should do require libcrypto from openssl. If you use secure streaming you
will also require openssl libssl. In addition, C++ thread support may have to
be enabled to use C++ thread operations. The cmake/features.cmake file shows
how to test for and enable these dependencies correctly from CMake.
## Distributions
Distributions of this package are provided as detached source tarballs made
from a tagged release from our public gitlab repository or by building the dist
target. These stand-alone detached tarballs can be used to make packages for
many GNU/Linux systems, and for BSD ports. They may also be used to build and
install the software directly on a target platform.
The latest public release source tarball can be produced by an auto-generated
tarball from a tagged release in the projects public git repository at
https://gitlab.com/tychosoft/moderncli. Moderncli can also be easily vendored
in other software using git modules from this public repo. I also package
Moderncli for Alpine Linux. There is no reason this cannot easily be packaged
for use on other distributions, for BSD ports, vcpkg, etc, as well.
## Participation
This project is offered as free (as in freedom) software for public use and has
a public project page at https://www.gitlab.com/tychosoft/moderncli which has
an issue tracker where you can submit public bug reports and a public git
repository. Patches and merge requests may be submitted in the issue tracker
or thru email. Support requests and other kinds of inquiries may also be sent
thru the tychosoft gitlab help desktop service. Other details about
participation may be found in CONTRIBUTING.md.
## Testing
There is a testing program for each header. These run simple tests that will be
expanded to improve code coverage over time. The test programs are the only
build target making this library by itself, and the test programs in this
package work with the cmake ctest framework. They may also be used as simple
examples of how a given header works. There is also a **lint** target that can
be used to verify code changes.