Terminality is distributed as source. You clone the repository, build a static library with CMake, and then link that library into your own project. This page covers every step: prerequisites, building Terminality itself, and wiring it into your CMake project.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/Rikitav/Terminality/llms.txt
Use this file to discover all available pages before exploring further.
Prerequisites
Before you build, make sure you have:- C++23-capable compiler — MSVC (latest) or GCC (latest). Terminality relies on C++23 named modules; older compiler versions are not supported.
- CMake 4.0 or newer — the root
CMakeLists.txtdeclarescmake_minimum_required(VERSION 4.0). - Git — to clone the repository.
C++23 module support varies across toolchains. MSVC in Visual Studio 2022 (17.4+) and GCC 14+ have the most complete implementations. Clang module support for C++23 is still maturing and is not officially tested.
Build Terminality
Configure with CMake
Create a build directory and run CMake from inside it:CMake sets
CMAKE_CXX_STANDARD 23, enables module scanning with CMAKE_CXX_SCAN_FOR_MODULES ON, and automatically selects the platform-specific backend — HostApplication.Windows.cpp on Windows, HostApplication.Linux.cpp on Linux.Integrate into your own project
Once the library is built, there are two ways to integrate it: consume the build tree directly viaadd_subdirectory, or point to the already-built artifacts manually.
Option A: add_subdirectory (recommended)
If your project and Terminality share a repository or are co-located, add Terminality as a subdirectory in yourCMakeLists.txt:
terminality target already exposes its include directories and module sources as PUBLIC file sets, so target_link_libraries is all you need.
Option B: link the pre-built library
If you built Terminality separately, point CMake to the include path and the library file:C++23 modules requirement
Terminality exposes no traditional headers. Every public type is exported from theterminality named module. Your source files must use:
#include with import for the same translation unit containing Terminality types. The module boundary is intentional — it enforces clean separation between the framework and your application code.
Platform notes
- Windows
- Linux
Build with MSVC via the Visual Studio 2022 generator or the
cl command line. The Windows backend (HostApplication.Windows.cpp) is selected automatically by CMake when WIN32 is defined.Verify the build
Run the bundled test application to confirm everything is working:Escape to exit.
Next steps
Get started with Terminality
Build your first app with a complete code walkthrough.
What is Terminality?
Understand the architecture, module system, and extension points.