- The goal of the project was to create a higlhy customizable, intuitive and easy to work with graph library for the modern C++ standards.
- The
CPP-GLlibrary's implementation relies solely on the C++ standard library (it does not require installing any additional tools) and is designed to be compatible with the C++ standard tools, e.g. range-based loops, std algorithms, the ranges library, stream operations, etc. - The library relies heavily on concepts to acheive abstraction instead of interfaces and abstract classes to minimize the overhead associated with virtual tables and dynamic dispatch.
Note
v1.0.* and v1.0-prerelease-* versions of the library have been developed as the Bachelor of Engineering project at the Wrocław University of Science and Technology
Faculty: W04N - Faculty of Information and Communication Technology
Field of study: Algorithmic Computer Science
- Overview
- Table of content
- Installing the library
- CMake integration
- Documentation - TODO
- Dev notes - TODO
- Compiler support
- Licence
The use the CPP-GL library in your project you can download the source code from the releases page and add the <cpp-gl-root>/include path to the include directories of your project.
The CPP-GL library can also be included in a CMake project by adding the following to the CMakeLists.txt file of your project:
cmake_minimum_required(VERSION 3.12)
project(my_project LANGUAGES CXX)
# Include FetchContent module
include(FetchContent)
# Fetch the CPP-GL library
FetchContent_Declare(
cpp-gl
GIT_REPOSITORY https://github.com/SpectraL519/cpp-gl.git
GIT_TAG <tag> # here you can specify the desired tag or branch
)
FetchContent_MakeAvailable(cpp-gl)
# Define the executable for the project
add_executable(my_project main.cpp)
set_target_properties(my_project PROPERTIES
CXX_STANDARD 23 # or newer
CXX_STANDARD_REQUIRED YES
)
# Link against the cpp-gl library
target_link_libraries(my_project PRIVATE cpp-gl)| Compiler | Min version |
|---|---|
| GNU G++ | 14 |
| Clang | 18 |
Note
Although currently the project has been properly verified using only the G++ and Clang compilers it should work fine with other compilers with C++23 support like MSVC.
The CPP-GL project uses the MIT Licence which can be found in the LICENCE file