OpenEngine uses CMake as its build system with vcpkg for dependency management. All third-party C/C++ dependencies (GLFW, shaderc, VMA, etc.) are handled automatically via manifest mode.
CMake Generators
Visual Studio 2022
Windows-only. Multi-config generator supporting Debug/Release/RelWithDebInfo.
Ninja
Recommended for Linux/macOS. Single-config generator โ specify CMAKE_BUILD_TYPE.
Unix Makefiles
Fallback for Linux/macOS if Ninja is unavailable.
Xcode
macOS only. Multi-config, supports Debug/Release.
Key CMake Options
| Option | Values | Default | Description |
|---|---|---|---|
BUILD_EXAMPLES | ON/OFF | OFF | Build example games and demos |
BUILD_TESTING | ON/OFF | OFF | Build test executables |
ENABLE_SCRIPTING | ON/OFF | OFF | Enable C# scripting via CoreCLR |
CMAKE_BUILD_TYPE | Debug/Release/RelWithDebInfo | Debug | Build configuration (single-config only) |
Dependency Management
Dependencies are declared in vcpkg.json at the project root. CMake's manifest mode bootstraps vcpkg under cmake/dependencies/vcpkg/ on first configure and installs all ports automatically.
Key dependencies installed via vcpkg:
- GLFW โ windowing and input
- shaderc โ Vulkan shader compilation (
glslc) - Vulkan Memory Allocator (VMA) โ GPU memory management
- vulkan-loader โ Vulkan API loader (includes
wayland,xcb,xlibsurface extensions on Linux)
Build Outputs
# Windows multi-config
cmake --build build --config Debug
cmake --build build --config Release
# Linux/macOS single-config
cmake --build build -- -j$(nproc)Output layout (Visual Studio):
build/
โโโ bin/Debug/
โ โโโ Apps/Editor/Editor.exe
โ โโโ Tests/
โโโ lib/Debug/Engine.lib
โโโ bin/Release/
โโโ Apps/Editor/Editor.exe
โโโ Tests/For single-config generators, output goes directly to build/bin/ without config subfolder.
Custom Build Configurations
cmake -B build -G "Visual Studio 17 2022" -A x64 \
-DCMAKE_BUILD_TYPE=RelWithDebInfo
cmake --build build --config RelWithDebInfoUse Release builds for performance testing. Debug builds include full symbols and validation layers.
Next Steps
- Configure C# Scripting for game logic
- Build on Linux or macOS