This project now supports CMake for easier, version-independent builds!
- Version Independent: Works with any modern Visual Studio (2019, 2022, 2026+)
- Cross-platform: Can build on Windows, Linux, macOS
- Automatic dependency management: Downloads missing dependencies
- CI/CD friendly: Perfect for GitHub Actions
Simply run the CMake build script:
Tools\build_plugin_cmake.bat-
Create build directory:
cd Sources\backend-cpp mkdir build cd build
-
Configure:
cmake .. -G "Visual Studio 17 2022" -A x64Or for older VS:
cmake .. -G "Ninja" -DCMAKE_BUILD_TYPE=Release -
Build:
cmake --build . --config Release
CMake will automatically download and configure:
- nlohmann_json (automatically fetched from GitHub)
- Google Test (automatically fetched for tests)
You still need to provide Lua 5.4:
vcpkg install lua:x64-windows
cmake .. -DCMAKE_TOOLCHAIN_FILE=<vcpkg-root>/scripts/buildsystems/vcpkg.cmakecmake .. -DLUA_INCLUDE_DIR=C:/path/to/lua/include -DLUA_LIBRARIES=C:/path/to/lua/lib/lua54.libThe build script will restore Lua from NuGet packages if you use the old MSBuild method.
-
BUILD_TESTS: Enable/disable test suite (ON by default)
cmake .. -DBUILD_TESTS=OFF
-
CMAKE_BUILD_TYPE: Debug or Release
cmake .. -DCMAKE_BUILD_TYPE=Debug
- ✅ Visual Studio 2022 (v143)
- ✅ Visual Studio 2026 (v145)
- ✅ Any version with C++17 support
The original MSBuild files are still available:
Tools\build_plugin.batSee dependencies section above for Lua installation options.
Install Visual Studio or use Ninja:
choco install ninja
cmake .. -G "Ninja"CMake works perfectly with GitHub Actions:
- name: Configure CMake
run: cmake -B build -S Sources/backend-cpp
- name: Build
run: cmake --build build --config ReleaseThe CMake build produces the same output as MSBuild:
- Executable:
streamdeck_dcs_interface.exe - Output location: Automatically copied to
Sources/com.ctytler.dcs.sdPlugin/bin/ - All libraries are statically linked
When adding new source files:
- Add them to the appropriate
CMakeLists.txtin the module folder - No need to modify
.vcxprojfiles anymore - CMake automatically detects and builds all listed files