Top 23 C++ header-only Projects
-
json
JSON for Modern C++
I use a stale bot on nlohmann/json and find it pretty useful (though I do not lock issues, but merely tag them "stale" and close them a bit later. Those issues can still be commented, and in the time they are marked stale, any comment will reopen them).
-
Catch2
A modern, C++-native, header-only, test framework for unit-tests, TDD and BDD - using C++11, C++14, C++17 and later (or C++03 on the Catch1.x branch)
Now it is time to put C++ into practical usage. C++ is used for diverse purposes, and using C++ in specific areas is probably more critical than the C++ language itself. It is perhaps also a good time to spend some time on the broader C++ ecosystems, like unit test libraries such as Catch2, build system generators such as CMake, and package managers such as Conan.
-
spdlog
Fast C++ logging library.
Latest mention: What tools similar to std::optional should you be using? | reddit.com/r/cpp | 2021-01-02Yeah. I just added spdlog to a project and it's infuriating how the API expects things to be held in a shared pointer. Let me design my own ownership semantics!
-
crow
Crow is very fast and easy to use C++ micro web framework (inspired by Python Flask)
-
GuiLite
✔️The smallest header-only GUI library(4 KLOC) for all platforms
You can get source code here
-
glm
OpenGL Mathematics (GLM)
glm [link]
-
entt
Gaming meets modern C++ - a fast and reliable entity component system (ECS) and much more
The API reminds me a bit of EnTT (Disclaimer: I am considered a contributor, even through its just a few lines). It makes heavy use internally of type-erasure (which would among other things remove the need for a common base class component) and other tricks and ideas you might get some inspiration from for your implementation.
-
cpp-httplib
A C++ header-only HTTP/HTTPS server and client library
Latest mention: How would you implement a basic REST API framework in C++ *from scratch*? | reddit.com/r/cpp_questions | 2021-01-07 -
doctest
The fastest feature-rich C++11/14/17/20 single-header testing framework
-
compile-time-regular-expressions
A Compile time PCRE (almost) compatible regular expression matcher.
Until it’s in the standard have a look at, use and contribute to the work on GitHub (regex link, fmt link).
-
magic_enum
Static reflection for enums (to string, from string, iteration) for modern C++, work with any enum type without any macro or boilerplate code
Latest mention: Conversion of two vectors with Variant class | reddit.com/r/cpp_questions | 2021-01-11If you want to find out the number of enums at compile time, there is ways to do that without the last element trick. Take a look at https://github.com/Neargye/magic_enum for how to (or just use the library, its great)
-
indicators
Activity Indicators for Modern C++
p-ranav/indicators offers a very rich api but this is definitely simpler to use.
-
PEGTL
Parsing Expression Grammar Template Library
-
FunctionalPlus
Functional Programming Library for C++. Write concise and readable C++ code.
You can copy this project structure: https://github.com/Dobiasd/FunctionalPlus
-
uvw
Header-only, event based, tiny and easy to use libuv wrapper in modern C++ - now available as also shared/static library!
-
hana
Your standard library for metaprogramming
Latest mention: C Implementation Challenge Replacing Stdmove And | reddit.com/r/programming | 2020-09-23Boost.Hana developers measured a very noticeable 15% decrease in compile time switching from a function call (admittedly -- with an additional layer of wrapper) to a raw static_cast. foonathan himself saw a little over a 5% decrease in his actual code. miki151 saw about a 3% improvement from replacing move with MOV only, ignoring forward. In a completely synthetic benchmark where I just generate a ton of move calls in a row, I get a little over 40% decrease in compile time.
-
better-enums
C++ compile-time enum to string, iteration, in a single header file
-
plog
Portable, simple and extensible C++ logging library
-
nameof
Nameof operator for modern C++, simply obtain the name of a variable, type, function, macro, and enum
-
argh
Argh! A minimalist argument handler.
-
frugally-deep
Header-only library for using Keras models in C++.
-
inja
A Template Engine for Modern C++
-
clipp
easy to use, powerful & expressive command line argument parsing for modern C++ / single header / usage & doc generation
Index
What are some of the best open-source header-only projects in C++? This list will help you:
Project | Stars | |
---|---|---|
1 | json | 22,803 |
2 | Catch2 | 12,649 |
3 | spdlog | 10,679 |
4 | crow | 6,156 |
5 | GuiLite | 5,148 |
6 | glm | 4,751 |
7 | entt | 4,598 |
8 | cpp-httplib | 4,293 |
9 | doctest | 3,001 |
10 | compile-time-regular-expressions | 1,723 |
11 | magic_enum | 1,541 |
12 | indicators | 1,364 |
13 | PEGTL | 1,247 |
14 | FunctionalPlus | 1,221 |
15 | uvw | 1,188 |
16 | hana | 1,186 |
17 | better-enums | 1,071 |
18 | plog | 1,011 |
19 | nameof | 947 |
20 | argh | 722 |
21 | frugally-deep | 698 |
22 | inja | 669 |
23 | clipp | 666 |