exkit is a small C++20 task execution library for dependency-aware workloads. It lets you build a graph of tasks, express dependencies between them, and run the graph on a thread pool so independent tasks can execute in parallel.
- Dependency-aware task scheduling
- Parallel execution on a configurable thread pool
- Support for value-returning and
voidtasks - Exception propagation through task results
- CMake package export with
find_package(exkit)support
Configure the project with the options defined in the root CMake file:
BUILD_TESTINGenables or disables the test suite.MAKE_INSTALLABLEenables or disables install rules.BUILD_SHARED_LIBScontrols whether the library is built shared or static.
cmake -S . -B build -DBUILD_TESTING=ON -DMAKE_INSTALLABLE=ON -DBUILD_SHARED_LIBS=ON
cmake --build buildctest --test-dir build --output-on-failurecmake --install buildCreate tasks first, then connect dependent tasks, and finally call run():
#include <exkit/exkit.hpp>
int main() {
Exkit exkit;
auto fetch = exkit.task([]() { return 7; });
auto transform = exkit.task([](int value) { return value + 35; }, fetch);
auto total = exkit.task([](int value) { return value + 378; }, transform);
exkit.run();
return total.get() == 420 ? 0 : 1;
}The corresponding pattern in the tests is covered in tests/exkit/task.cpp.
The exported target name is exkit::exkit.
find_package(exkit REQUIRED)
target_link_libraries(your_target PRIVATE exkit::exkit)The package config is generated from the files in cmake/Config.cmake.in and installed under the exkit package name.
include/exkit/ Public headers
src/exkit/ Library implementation
tests/ GoogleTest-based test suite
cmake/ Package configuration template
docs/ Doxygen theme assets
Doxyfile is included for local API documentation generation with Doxygen.