Skip to content

Latest commit

 

History

History
111 lines (75 loc) · 3.72 KB

File metadata and controls

111 lines (75 loc) · 3.72 KB

CPP-GL


G++ Clang++ Code Formatting Benchmarks Smoke Test


Overview

  • 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-GL library'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


Table of content


Installing the library

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.


CMake integration

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)

Documentation - TODO


Dev notes - TODO


Compiler support

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.


Licence

The CPP-GL project uses the MIT Licence which can be found in the LICENCE file