Skip to main content

Build

Make sure the prerequisites are in place first.

Configure and build

git clone <repo-url>
cd FrameLift

# Activate the formatting hook (one-time per clone)
git config core.hooksPath .github/hooks

# Configure and build
cmake -B cmake-build-debug -DCMAKE_BUILD_TYPE=Debug
cmake --build cmake-build-debug --config Debug

This builds the host executable, every built-in module compiled into it, and all bundled plugin DLLs/SOs.

Output layout

cmake-build-debug/
├── framelift(.exe) # the host executable
└── plugins/ # plugin DLLs/SOs (.dll on Windows, .so on Linux)
├── framelift.playlist.so
├── framelift.history.so
└── …

On Windows the required shared libraries (Qt 6, FFmpeg, libass) are copied next to the executable; on Linux they are resolved from the system. The Vulkan and OpenGL loaders are resolved at runtime — only a GPU driver is needed to run.

Versioning

The build version is injected via -DFRAMELIFT_VERSION (defaults to 0.0.0 locally). An optional -DFRAMELIFT_VERSION_DISPLAY overrides the human-readable string without changing the numeric version.

Tests

Unit tests cover platform-independent logic (no FFmpeg needed) and can be built standalone:

cmake -S tests -B build-tests -G Ninja -DCMAKE_BUILD_TYPE=Debug
cmake --build build-tests
ctest --test-dir build-tests --output-on-failure

Tests are also configured in-tree (FRAMELIFT_BUILD_TESTS=ON by default) so the targets appear in IDEs.

Next

See Lean Builds to compile out built-in modules you don't need.