Go to file
S David 0120400815
All checks were successful
buildbot/IOCore-linux-builder Build done.
buildbot/IOCore-macos-builder Build done.
buildbot/IOCore-freebsd-builder Build done.
Add Buildbot Status Badge to README.md
2024-04-19 18:07:54 -04:00
.vim local.vimrc: Fix missing .json extension in compile_commands.json link 2024-04-19 00:27:29 -04:00
app Add option to use system Catch2, as well as Catch/Ctest integration; create README and LICENSE files 2023-12-09 16:33:46 -05:00
cmake Set a global variable for $PROJECT_NAME_ARTIFACT_DIR. 2024-04-13 16:43:10 -04:00
include Removing unneded header in sys/paths.hpp 2024-04-18 23:52:32 -04:00
src Use IOCore project root in copy_directory call 2024-04-18 23:44:51 -04:00
tests Move editorconfig files to .vim folder; move headers under IOCore/ subdir 2024-04-18 23:27:17 -04:00
.clang-format Import vim, clang-format and clang-tidy settings 2024-03-24 14:34:43 -04:00
.clang-tidy Import vim, clang-format and clang-tidy settings 2024-03-24 14:34:43 -04:00
.gitignore Move editorconfig files to .vim folder; move headers under IOCore/ subdir 2024-04-18 23:27:17 -04:00
CMakeLists.txt Add Buildbot Status Badge to README.md 2024-04-19 18:07:54 -04:00
Doxyfile Add Doxyfile 2024-04-06 10:22:02 -04:00
LICENSE Import vim, clang-format and clang-tidy settings 2024-03-24 14:34:43 -04:00
README.md Add Buildbot Status Badge to README.md 2024-04-19 18:07:54 -04:00

IOCore: A C++20 Application Framework Library

CI/CD Build Status

Arch Linux FreeBSD 14.0 macOS Windows
Build Status Build Status Build Status TBD

IOCore is a comprehensive C++20 library designed to simplify common programming tasks.

It features advanced argument parsing functions, a custom exception class that captures stack traces at the point of throw, and a set of convenience macros for writing unit tests, among other utilities. The library leverages modern C++20 features and best practices to provide a robust foundation for software development.

Getting Started

Prerequisites

  • CMake (version 3.21 or higher)
  • A C++20-compatible compiler
  • Optional: Catch2 installed on your system to speed up compile time

Building the Project

  1. Clone the repository:

    git clone https://gitea.beniquez.me/sdaveb/IOCore.git
    
  2. Navigate to the project directory:

    cd IOCore
    
  3. Configure your build system:

    cmake -B debug -G Unix Makefiles
    # or
    cmake -B debug -G Ninja 
    
  4. Invoke your build system:

    cmake --build debug
    

Running Unit Tests

  1. After building the project, you can run the unit tests:
    cmake --build debug --target ctest
    

This will execute the IOCore test suite using Catch2.

Project Structure

  • src/: Contains the core library code, including argument parsing functions and the custom exception class.
  • app/: Provides examples on how to utilize the IOCore library in applications.
  • test/: Contains unit tests for the library, leveraging Catch2 and FakeIt to ensure robustness and reliability.

Key Features

  • Argument Parsing: Simplifies handling command-line arguments with a flexible and intuitive API.
  • Exception Handling: Offers a powerful exception class that includes stack traces for comprehensive error analysis.
  • Unit Testing Macros: Facilitates writing unit tests by providing convenient macros that integrate seamlessly with Catch2.

Dependencies

  • Catch2 v3: Test framework for C++ (can be fetched using FetchContent).
  • FakeIt: Mocking framework for C++ (also fetched using FetchContent).

License

This project is licensed under the MPL2.0 License - see the LICENSE file for details.