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)
glslangonPATH(theglslang-toolspackage) — compiles the GLSL shaders to SPIR-V at build time. CMake fetches and builds glslang as a fallback only when it isn't found onPATH.clang-formatonPATH(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.
| Library | Version | Source |
|---|---|---|
Qt 6 (qtbase, qtdeclarative, qtmultimedia) | vcpkg / system | vcpkg/system |
| FFmpeg | vcpkg / system | vcpkg/system |
| libass | vcpkg / system | vcpkg/system |
| Vulkan-Headers | 1.4.354 | FetchContent |
| VulkanMemoryAllocator | 3.4.0 | FetchContent |
| glslang | build-time, fallback | PATH / 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.