Ishiko/C++ is a set of C++ libraries.
This repository contains the project documentation.
-
BasePlatform: code to handle differences between operating systems.
-
Collections: container classes.
-
Color: color classes.
-
Concurrency: Executors and thread pools.
-
Configuration: configuration classes.
-
Crypto: cryptographic functions.
-
CSV: CSV utilities.
-
DataStructures: data structures.
-
Diff: diff utilities.
-
Errors: code to handle and report errors.
-
FileSystem: utilities to work with the file system.
-
Hash: a library to calculate hashes.
-
HTTP: a library that provides HTTP functionality.
-
IO: I/O utilities.
-
JSON: JSON utilities.
-
Logging: logging utilities.
-
Math: Mathematical functions.
-
Memory: Allocators and memory buffers.
-
Metrics: utilities to collect metrics.
-
Networking: networking.
-
PDF: code to work with PDF documents.
-
Process: code to work with processes and environment variables.
-
REST: REST utilities.
-
Synchronization: synchronization mechanisms.
-
Terminal: utilities to work with terminal input and output.
-
TestFramework: a C++ test framework.
-
Text: utilities to work with text data.
-
Time: basic classes to represent time.
-
Types: fundamental types.
-
UUIDs: UUID types.
-
Workflows: a framework to schedule and execute tasks.
-
XML: XML utilities.
-
YAML: YAML utilities.
- Botan: Botan is a C++ cryptography library.
- fmt: {fmt} is an open-source formatting library providing a fast and safe alternative to C stdio and C++ iostreams.
- mstch: mstch is a complete implementation of {{mustache}} templates using modern C++.
- pugixml: Light-weight, simple and fast XML parser for C++ with XPath support
First the third-party dependencies need to be installed. These are available in the ishiko-third-party organization except for Boost which you get from the boost.org website. There are no dependencies between them so the build order doesn't matter but we define the following order for consistency.
- Boost
- fmt
- Botan
- pugixml
- mstch
Download the archive from the boost.org website. The instructions below are for Windows but they translate directly to bash.
C:\>set ISHIKO_WORKSPACE=<workspace_root_dir>
C:\>set ISHIKO_INSTALL_DIR=%ISHIKO_WORKSPACE%\Installation
C:\>set ISHIKO_PROJECTS_DIR=%ISHIKO_WORKSPACE%\Projects
C:\>cd /d %ISHIKO_PROJECTS_DIR%\boostorg\boost_1_90_0
C:\>.\bootstrap.bat
C:\>.\b2 install --prefix=%ISHIKO_INSTALL_DIR%
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=.. ..
cmake --build . --config=Debug
cmake --build . --config=Release
cmake --install . --config=Debug
cmake --install . --config=Release
This installs the libraries in the lib folder at the root of the repo. The last step is to rename the files to adopt the Boost naming convention: fmt-d-x64.lib.
On Windows:
git checkout 2.19.5-fix
python ./configure.py --cc=msvc --os=windows --disable-shared-library --debug-mode --prefix=..\..\..\..\..\Installation
Then open a Visual Studio build shell and run:
nmake
nmake check
nmake install
The following build order can be used to build the projects from scratch:
- BasePlatform (without the test code)
- Errors (without the test code)
- Memory (without the test code)
- Logging (without the test code)
- Types (without the test code)
- Hash (without the test code)
- Synchronization (without the test code)
- DataStructures (without the test code)
- Collections (without the test code)
- Text (without the test code)
- Time (without the test code)
- Concurrency (without the test code)
- Process (without the test code)
- IO (without the test code)
- FileSystem (without the test code)
- XML (without the test code)
- JSON (without the test code)
- YAML (without the test code)
- Diff (without the test code)
- Configuration (without the test code)
- TestFramework/Core
- BasePlatform (now with the test code)
- Errors (now with the test code)
- Memory (now with the test code)
- Logging (now with the test code)
- Types (now with the test code)
- Hash (now with the test code)
- Synchronization (now with the test code)
- DataStructures (now with the test code)
- Collections (now with the test code)
- Text (now with the test code)
- Time (now with the test code)
- Concurrency (now with the test code)
- Process (now with the test code)
- IO (now with the test code)
- FileSystem (now with the test code)
- XML (now with the test code)
- JSON (now with the test code)
- YAML (now with the test code)
- Diff (now with the test code)
- Configuration (now with the test code)
- TestFramework
- Math
- Crypto
- Color
- Terminal
- Workflows
- UUIDs
- Networking
- HTTP
- REST
- CSV
None.
Copyright (c) 2005-2026 Xavier Leclercq
This work is licensed under the Boost Software License 1.0
See https://github.com/ishiko-cpp/project/blob/main/LICENSE.txt