Skip to main content
This guide covers building plugdata from source on all supported platforms. Building from source allows you to customize the build, add your own externals, or contribute to development.

Prerequisites

Required Tools

  • CMake 3.21 or later (required for CLAP plugin support)
  • Git with submodule support
  • Python 3 interpreter
  • Platform-specific build tools:
    • macOS: Xcode or Xcode Command Line Tools
    • Windows: Visual Studio 2019 or 2022
    • Linux: GCC or Clang, Make

Linux Dependencies

On Linux, JUCE framework requires specific system dependencies. You must install these before building.
Refer to the JUCE Linux Dependencies documentation and use the full command to install all required packages. Typical dependencies include:
  • libasound2-dev
  • libx11-dev
  • libxrandr-dev
  • libxinerama-dev
  • libxcursor-dev
  • libfreetype6-dev
  • libwebkit2gtk-4.0-dev
  • libglu1-mesa-dev

Clone the Repository

Build Configuration

Basic Build

CMake Build Options

Customize your build with CMake options using -D<OPTION>=<VALUE>:

Performance Options

Feature Toggles

Advanced Options

Example Configurations

Performance Profiling with Perfetto

Perfetto provides detailed performance analysis of DSP and UI operations.

Platform-Specific Notes

macOS

Deployment Targets:
  • Standard: macOS 10.15+ (Universal Binary: arm64 + x86_64)
  • Legacy: macOS 10.11+ (x86_64 only) with MACOS_LEGACY=ON
  • iOS: iOS 12.0+
Metal Rendering: Metal is enabled by default on macOS for better performance. Use NANOVG_METAL_IMPLEMENTATION=OFF to disable.

Windows

Visual Studio:
  • Tested with VS 2019 and VS 2022
  • Use x64 architecture: -A x64
  • ASIO support is automatically included
Runtime Library: Uses static runtime linking: MultiThreaded[Debug]

Linux

Audio Backends:
  • ALSA (enabled by default)
  • JACK (enabled by default)
Wayland Support (Experimental):
Requires: wayland-client, wayland-cursor, xkbcommon, libdecor-0, egl

BSD

On BSD systems, Gem and sfizz are automatically disabled due to compatibility issues.

Build Outputs

After building, plugins and standalone app are located in:

Installing

To install system-wide:
Platform-specific install locations are configured in CMakeLists.txt (lines 887-932).

Troubleshooting

CMake Version Too Old

Solution: Update CMake or disable CLAP builds (VST3/AU/LV2 still work).

Submodules Not Initialized

Solution: Run git submodule update --init --recursive

Python Not Found

Solution: Install Python 3 and ensure it’s in your PATH.

Linux Missing Dependencies

Solution: Install all JUCE dependencies as listed in the Linux Dependencies documentation.

Next Steps

Adding Externals

Learn how to add custom Pure Data externals

Performance Optimization

Optimize your patches for better performance