![]() |
Owl Engine 0.0.3
Very simple Game Engine for learning purpose
|
This page explains how to configure, build, and test the Owl engine.
| Tool | Version | Notes |
|---|---|---|
| CMake | 3.24+ | Build system generator |
| Ninja | Recommended build backend | |
| GCC | 13+ | Or Clang 18+ |
| Python | 3.12+ | For CI tooling and DepManager |
| Poetry | Python dependency manager | |
| DepManager | C++ dependency manager (installed via Poetry) |
Install Python dependencies:
Owl uses CMake presets. To configure and build:
| Preset | OS | Compiler | Config |
|---|---|---|---|
linux-gcc-release | Linux | GCC | Release |
linux-gcc-debug | Linux | GCC | Debug |
linux-clang-release | Linux | Clang | Release |
linux-clang-debug | Linux | Clang | Debug |
windows-gcc-release | Windows | MinGW GCC | Release |
windows-gcc-debug | Windows | MinGW GCC | Debug |
windows-clang-release | Windows | MinGW Clang | Release |
windows-clang-debug | Windows | MinGW Clang | Debug |
| Preset | Purpose |
|---|---|
linux-clang-tidy | Static analysis (clang-tidy) |
windows-clang-tidy | Static analysis (clang-tidy) |
linux-sanitizer-address | AddressSanitizer |
linux-sanitizer-thread | ThreadSanitizer |
linux-sanitizer-undefined-behavior | UndefinedBehaviorSanitizer |
linux-sanitizer-leak | LeakSanitizer |
| Preset | Description |
|---|---|
package-engine-linux | Package engine library for Linux |
package-engine-windows | Package engine library for Windows |
package-app-nest-linux | Package Owl Nest for Linux |
package-app-nest-windows | Package Owl Nest for Windows |
package-app-drone-linux | Package Owl Drone for Linux |
package-app-drone-windows | Package Owl Drone for Windows |
Tests use Google Test and are enabled by default (OWL_TESTING=ON):
Test executables are named owl_<category>_unit_test with 13 categories: core, debug, event, font, gui, input, layer, math, mesh, physic, renderer, scene, sound.
The Python-based CI system wraps CMake operations. Always invoke through Poetry:
| Output | Path |
|---|---|
| Binaries | output/build/<preset>/bin/ |
| Libraries | output/build/<preset>/lib/ |
| Install | output/install/<preset>/ |
| Option | Default | Description |
|---|---|---|
OWL_BUILD_SHARED | ON | Build engine as shared library |
OWL_BUILD_NEST | ON | Build Owl Nest editor |
OWL_BUILD_SANDBOX | ON | Build sandbox app |
OWL_BUILD_DRONE | ON | Build drone app |
OWL_BUILD_CAST | ON | Build cast app |
OWL_TESTING | ON | Enable unit tests |
OWL_ENABLE_COVERAGE | OFF | Code coverage (auto-enabled in debug presets) |
OWL_ENABLE_STACKTRACE | OFF | Memory tracker stacktrace (performance impact) |
OWL_ENABLE_PROFILING | OFF | Profiling output |
OWL_USE_RELEASE_THIRD_PARTY | ON | Use release builds of third-party libraries |
OWL_DEFINE_VULKAN_LAYERS | OFF | Copy Vulkan layers to binary directory |
OWL_ENABLE_CLANG_TIDY | OFF | Enable clang-tidy static analysis |
OWL_ENABLE_ADDRESS_SANITIZER | OFF | AddressSanitizer |
OWL_ENABLE_THREAD_SANITIZER | OFF | ThreadSanitizer |
OWL_ENABLE_UNDEFINED_BEHAVIOR_SANITIZER | OFF | UndefinedBehaviorSanitizer |
OWL_ENABLE_LEAK_SANITIZER | OFF | LeakSanitizer |
OWL_ENABLE_MEMORY_SANITIZER | OFF | MemorySanitizer (Clang-only) |
OWL_ENABLE_DOCUMENTATION | OFF | Enable Doxygen documentation generation |
OWL_PACKAGING | OFF | Enable packaging mode |