Core SE.Live OBS plugin.
This plugin does not build on its own. It is built as part of an obs-studio
tree, and it has a hard dependency on the obs-browser plugin being present
as a sibling — StreamElementsBrowserWidget.cpp includes
../../obs-browser/panel/browser-panel.hpp by relative path.
obs-studio/
├── CMakeUserPresets.json <- copy of this repo's CMakeUserPresets.json (Windows)
└── plugins/
├── CMakeLists.txt <- must contain: add_obs_plugin(obs-streamelements-core)
├── obs-browser/ <- required
└── obs-streamelements-core/ <- this repo
Clone obs-studio with --recursive so obs-browser comes along. CI pins
obs-studio to tag 31.1.2; newer trees also work.
CMake reads CMakeUserPresets.json only from the top-level source directory,
so the preset has to be copied up to the obs-studio root before configuring:
copy plugins\obs-streamelements-core\CMakeUserPresets.json CMakeUserPresets.json
cmake --preset=windows-x64-streamelements
msbuild build_x64\obs-studio.sln -p:Configuration=RelWithDebInfoThe windows-x64-streamelements preset just inherits obs-studio's own
windows-x64 preset, so configuring with --preset=windows-x64 works too.
deps/BugSplat.xcframework.zip must be unpacked first or CMake stops with a
fatal error:
(cd plugins/obs-streamelements-core/deps && unzip -o BugSplat.xcframework.zip)
cmake --preset=macos -DCMAKE_OSX_ARCHITECTURES=arm64 -B build_macos_arm64
cd build_macos_arm64 && xcodebuild -configuration RelWithDebInfo \
-scheme obs-streamelements-core \
-destination "generic/platform=macOS,name=Any Mac"streamelements/Version.generated.hppmust defineSTREAMELEMENTS_PLUGIN_VERSION. A placeholder is committed so a fresh checkout compiles; CI overwrites it with the real build number. Don't edit it by hand.- Don't copy the
-DENABLE_*=OFFflags out of.github/workflows/build.yml. CI turns off nearly every OBS feature — including-DENABLE_UI=OFF— because it only needs the plugin binary as an artifact. For local work you want the OBS UI built so there is something to run the plugin in. - There are no tests. Compiling is the only automated check, alongside
CI/check-format.sh. - Format only what you changed:
clang-format -i -style=file -fallback-style=none <file>. Do not runformatcode.sh— it has no exclusions and rewrites all ofdeps/andstreamelements/deps/.
| Platform | Environment | Version |
|---|---|---|
| Windows | signed |
|
| Windows | qa |
|
| Windows | beta |
|
| Windows | latest |
|
| Windows | stable |
|
| MacOS | signed |
|
| MacOS | qa |
|
| MacOS | beta |
|
| MacOS | latest |
|
| MacOS | stable |
-
Make sure RELEASE_NOTES.md reflects the release content of the plug-in since previous release to the public (
latestrelease group). -
Once this repository is built, run the Release Signed Binaries action in github.
| From Environment | To Environment | Predicate |
|---|---|---|
signed |
qa |
none |
qa |
beta |
passes internal and closed beta testing |
beta |
latest |
2 weeks without serious issues on beta |
latest |
stable |
2 weeks without stability issues on latest |