Skip to content

Building on Windows

Building on Windows

This document covers the Windows-specific build path. For macOS / Linux see Building.

Prerequisites

  • Visual Studio 2022 with the “Desktop development with C++” workload (provides MSVC v143 + Windows SDK).
  • CMake 3.22+ — install via the VS workload or from cmake.org.
  • Git for cloning + submodules.
  • PowerShell 5.1+ (ships with Windows 10 / 11).
  • rsvg-convert for the app-icon pipeline. Install via Chocolatey (choco install rsvg-convert), scoop (scoop install librsvg), or WSL apt install librsvg2-bin. The build invokes it at configure time to rasterise the SVG icon source.

Build

Terminal window
git clone <repo-url> guitar-prometheus
cd guitar-prometheus
./scripts/build-release.ps1

The script:

  1. Configures with cmake -B build -S . -G "Visual Studio 17 2022" -A x64 -DCMAKE_BUILD_TYPE=Release.
  2. Builds GuitarPrometheus via cmake --build build --config Release.
  3. Runs cpack -G ZIP to produce a portable ZIP under build/.

Output layout (portable ZIP)

GuitarPrometheus-<version>-Windows/
├── GuitarPrometheus.exe
├── *.dll (JUCE / runtime support)
├── profiles/ (VST profile presets)
└── resources/ (schemas, bundled defaults)

The executable is portable: it looks for profiles/ next to itself rather than under %AppData%. Drop the extracted folder anywhere and run from there.

Running tests

Terminal window
cmake --build build --target GuitarPrometheusTests --config Release
ctest --test-dir build -C Release

Debug builds

Terminal window
cmake -B build-debug -S . -G "Visual Studio 17 2022" -A x64
cmake --build build-debug --config Debug

Debug builds skip CPack and run from the build directory directly. Use them for stepping through the parser / injector under MSVC’s debugger.

Known issues

  • MSVC -W4 noise from JUCE: JUCE’s generated juce_* modules emit warnings at /W4. The project compiles with /W3 plus targeted -Werror=switch-enum on our own sources only; do not raise the global warning level without scoping JUCE out.
  • CPack signing: cpack -G ZIP does not sign the executable. See Releases for the (deferred) Authenticode signing step.