synthgui is a single-file Qt 6 Widgets application (main.cpp, options.h, CMakeLists.txt). The goal is a working
synthgui.exe built on Windows. Nothing else in this repository is needed for that, so ignore deps/ (3 GB of
submodules), build-deps/, projects/ and xc7/ unless a step below says otherwise. Do not run
git submodule update for this task.
Needs Qt 6 (Widgets; 6.5 or newer), CMake 3.16+ and a C++17 compiler (MSVC 2022, or MinGW from the Qt installer).
git clone https://github.com/jrrk2/synthgui.git
cd synthgui
cmake -S . -B build -DCMAKE_PREFIX_PATH=C:/Qt/6.x.x/msvc2022_64 # or the MinGW kit
cmake --build build --config Release
windeployqt --release build/Release/synthgui.exe # copies the Qt DLLs next to it
Then run synthgui.exe and check that the main window opens.
main.cppis plain Qt apart from one POSIX assumption: pipeline steps run through/bin/bash -c <command>(QProcess::start("/bin/bash", ...), inMainWindowwherem_proc->startis called). On Windows that path does not exist. Usebashfrom the PATH (Git for Windows or MSYS2 provide it) and say in the README that it is needed. Keep the macOS and Linux behaviour unchanged (#ifdef Q_OS_WIN).- The project files (
projects/*.json) hold commands for macOS tools ({prefix}/bin/verilator,/Volumes/SONATA, Homebrew paths). They will not work on Windows; the aim here is only that the GUI builds, opens, loads a project and edits files. Running the FPGA flow on Windows is out of scope. repoRoot()is the directory above the executable (build/..). On Windows with abuild/Release/layout that isbuild/, not the checkout: adjust it only if something breaks, and keep it working for the macOS.applayout (Contents/MacOSgoes toContents/Resources).CMakeLists.txthas an optionSYNTHGUI_BUNDLE(default OFF) that builds a macOS.app. Leave it alone.scripts/package-macos.shis macOS-only: Developer ID signing and notarization. Do not port it.
synthgui.exe starts from a clean checkout following the commands above, with the README updated with the
Windows build instructions. Signing (an Authenticode certificate) is a separate, later task: do not sign or publish
anything.
- Commit only when asked; the commit message ends with a
Co-Authored-By: Claude ...line like the existing commits. - Do not push or tag. The owner pushes.
- Do not touch
projects/sonata_romlinux-src/(the Sonata Linux work, separate and unfinished).