Skip to content

Build Labrador

You build Labrador on its own first. That proves the tools work before your own project adds anything, and it builds the samples you will look at next.

  1. Clone the repository into your projects folder:

    Terminal window
    cd C:\dev
    git clone https://github.com/matt439/Labrador.git
    cd Labrador
  2. Configure the build:

    Terminal window
    cmake --preset x64-debug

    A preset is a named configuration in the repository’s CMakePresets.json. x64-debug is a 64-bit debug build using the Direct3D 11 renderer, with its output in out\build\x64-debug.

    The first time you run this, vcpkg downloads and builds Labrador’s dependencies: DirectX Tool Kit, the XAudio2 redistributable and the doctest test framework. That takes several minutes, and vcpkg keeps the results, so later configures are quick.

  3. Build it:

    Terminal window
    cmake --build --preset x64-debug

    This builds the engine, all five samples, the tests and the benchmarks. Warnings are errors in every Labrador build, so a successful build has none.

  4. Run the tests:

    Terminal window
    ctest --preset x64-debug

    Fourteen test programs run, and ctest should report 100% tests passed, 0 tests failed out of 17. One of them, RenderPixelTests, draws real frames through Direct3D and compares them with reference images, so a pass also tells you the renderer works on your machine.

The repository has a debug and a release preset for each renderer. Swap the preset name in all three commands to use one:

Preset Renderer
x64-debug, x64-release Direct3D 11
x64-debug-d3d12, x64-release-d3d12 Direct3D 12
x64-debug-gl, x64-release-gl OpenGL 3.3
x64-debug-vulkan, x64-release-vulkan Vulkan, which needs the Vulkan SDK
x64-debug-null, x64-release-null None: records what it was asked to draw, for testing on machines without a graphics card

The renderer is chosen when you configure rather than when the game starts. Asking for one that was not built is a link error, not a crash on the first frame.

Development documentation (unreleased). Built from Labrador 862e08b of 2026-10-08.