-
Notifications
You must be signed in to change notification settings - Fork 155
Build Dependencies
At the very least a plugin needs libobs
and its headers to be present on the local machine. This allows the development of plugins that neither require any custom interaction with the front-end or provide custom user interface widgets.
Unfortunately libobs
is not distributed as a standalone library but is part of OBS Studio releases. These releases commonly don't contain either source code or library headers on Windows or macOS, so libobs
and its public headers need to be sourced in a different way.
Even though it is common for some Linux distributions to provide binary packages and development resources as separate packages (one would commonly be called "the-package" while the other would be called "the-package-dev"), the only official package provided for Ubuntu contains both and needs to be installed as a "Personal Package Archive" (also known as PPA).
By default the CMake build system will take care of providing a libobs
variant for the plugin to use. Under the hood, the OBS version specified in buildspec.json
(see also Update Build Dependency Information) will be downloaded into a directory called .deps
in the project root and a minimal OBS Studio build will be triggered.
This minimal OBS Studio build will only generate libobs
as well as obs-frontend-api
and their exported headers. Once successful, both libraries will be "installed" (see also Configuring And Building Your Plugin) into the .deps
directory, where they can then be found by CMake when actually configuring the plugin project.
Important
This entire process is fully automated and usually requires no additional configuration or set up by the plugin developer. The only maintenance requirement is to keep the version in the buildspec.json
file up to date.
The only official OBS Studio package provided by the project is an Ubuntu PPA that needs to be added manually:
sudo add-apt-repository --yes ppa:obsproject/obs-studio
Caution
Do not use apt
to install the obs-studio
package without that PPA repository added. The PPA will be more recent and thus provide the best possible pre-compiled package for plugin development on Ubuntu.
Please refer to your chosen Linux distribution's package repository to check if it provides recent builds of OBS Studio or libobs
and obs-frontend-api
that can be used for development. If suitable, local variants can always be built from sources (see Build Instructions for Linux on the obs-studio
Wiki).
As libobs
will rely on system libraries on Linux-like systems, the actual list of necessary libraries to install might differ. Once again refer to your distribution's specific variant of corresponding packages.
OBS Studio is based on Qt6 for its application and user interface needs. By default plugins do not need to add Qt6 as a build dependency to their project as long as they interact with libobs
and obs-frontend-api
directly.
If a plugin wants to provide custom interface widgets, it will need to use the same Qt6 version that is used by OBS Studio to ensure binary compatibility.
For development on Windows and macOS no additional steps are necessary - the CMake build system will automatically download pre-built binaries generated for OBS Studio itself and set them up to be discovered for the plugin project.
The exact versions of these dependencies are configured in buildspec.json
(see also Update Build Dependency Information) and should be kept in sync with the same values used on the obs-studio
repository.
On Ubuntu and other Linux-like operating systems, the appropriate version of Qt6 needs to be installed manually. As OBS Studio also makes use of private Qt6 APIs, an additional package not used on other platforms needs to be installed as well:
sudo apt-get install qt6-base-dev libqt6svg6-dev qt6-base-private-dev
Please refer to other distributions' package systems for corresponding variations of these packages.
OBS Studio Developer Resources
Plugin Development | Frontend Development | Graphics Development