Skip to main content

Prerequisites

FrameLift is C++23 and built with CMake. Most dependencies are fetched automatically; only the native media libraries come from the system (Linux) or vcpkg (Windows).

Toolchain

  • CMake 4.2.0+
  • A C++23-capable compiler (GCC, Clang, or MSVC)
  • glslang on PATH (the glslang-tools package) — compiles the GLSL shaders to SPIR-V at build time. CMake fetches and builds glslang as a fallback only when it isn't found on PATH.
  • clang-format on PATH (for the pre-commit formatting hook)

Platform libraries

Linux

Install development packages for Qt 6 (Qt Quick), FFmpeg, libass, Vulkan, and OpenGL. On Ubuntu 25.04+:

sudo apt install qt6-base-dev qt6-declarative-dev qt6-multimedia-dev \
libavformat-dev libavcodec-dev libavutil-dev libswscale-dev \
libswresample-dev libavfilter-dev libass-dev \
libvulkan-dev libgl1-mesa-dev glslang-tools pkg-config

Windows

Use vcpkg with VCPKG_ROOT set — Qt 6 (qtbase, qtdeclarative, qtmultimedia), FFmpeg, and libass are resolved from the manifest in vcpkg.json. Configure with the vcpkg preset from CMakePresets.json.

Dependency overview

Native media libraries come from vcpkg (Windows) or the system (Linux); everything else is fetched by CMake via FetchContent.

LibraryVersionSource
Qt 6 (qtbase, qtdeclarative, qtmultimedia)vcpkg / systemvcpkg/system
FFmpegvcpkg / systemvcpkg/system
libassvcpkg / systemvcpkg/system
Vulkan-Headers1.4.354FetchContent
VulkanMemoryAllocator3.4.0FetchContent
glslangbuild-time, fallbackPATH / FetchContent

Qt provides the window, QML scene graph, raw-PCM audio, and the JSON backend (QJson) behind the host IJson service; no UI, logging, image, or JSON third-party library is used. The Vulkan stack is fetched only when the Vulkan graphics module is enabled, and the Vulkan/OpenGL loaders are resolved at runtime (no link-time libvulkan dependency).

Next

  • Build — configure and build the app.
  • Lean Builds — compile out built-in modules you don't need.