Installation
Requirements
- A C++23 compiler (GCC, Clang, or MSVC). Because no standard-library types cross the host ↔ plugin boundary, you do not need to match the compiler the host was built with.
- CMake 3.28 or newer.
- A copy of FrameLift to load your plugin into.
You do not need any third-party UI, logging, image, or JSON library. The SDK is dependency-free (it builds against Qt) — see the Introduction for why.
Get the SDK
The SDK is published as a framelift-sdk-<ver>.zip archive attached to each
tagged FrameLift release. Download and unpack it anywhere:
framelift-sdk-<ver>/
├── CMakeLists.txt # skeleton build root (declare your plugin here)
├── cmake/
│ ├── FrameLiftSdk.cmake # add_framelift_plugin() + the FrameLiftSdk target
│ ├── FrameLiftSdkConfig.cmake # find_package(FrameLiftSdk) entry point
│ └── FrameLiftSdkConfigVersion.cmake
├── include/framelift/ # public headers (umbrella: core.h, services.h, platform.h)
├── src/ # SDK helper sources, compiled into your plugin
├── README.md
└── LICENSE
Verify your toolchain with an example
Worked example plugins live in the separate FrameLift-Examples repository. Building one against the SDK is the fastest way to confirm your toolchain is set up correctly. Clone the repo, point it at your unpacked SDK, and build:
cmake -B build -DFRAMELIFT_SDK_DIR=/path/to/framelift-sdk-<ver>
cmake --build build
# → build/plugins/framelift.helloplugin.so
Plugin DLLs/SOs are emitted under build/plugins/ with lowercase artifact names:
the artifact is publisher.plugin (here framelift.helloplugin). If that file is
produced, your environment is ready.
Load a plugin into FrameLift
-
Copy the built plugin DLL/SO into the
plugins/directory next to theframeliftexecutable. -
Launch FrameLift. Every plugin is enabled by default — there is no opt-in list to maintain. To stop a specific plugin from loading, set its id to
disabledinplugins.iniin the FrameLift config directory:example.hello_plugin=disabled(Plugins can also be toggled from Settings → Plugins, which writes the same file. See the Configuration Reference.)
-
A plugin whose embedded ABI version does not exactly match the host's is skipped, and the reason is logged.
Next
Continue to Your First Plugin to write one from scratch.