iPlug2 avatar

build-cmake

Build an iPlug2 plugin project using CMake with Ninja, Xcode, or Visual Studio generators

提供方 iPlug2|开源

Build iPlug2 Plugin with CMake

Use this skill when the user wants to build their plugin project using CMake.

Prerequisites

  • CMake 3.14+
  • Ninja (recommended) or Xcode/Visual Studio
  • Plugin SDKs downloaded (VST3, CLAP, etc.) via /setup-deps

Quick Start

cd [ProjectFolder]
mkdir -p build && cd build
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release ..
cmake --build .

Generators

GeneratorCommandPlatformNotes
Ninja-G NinjamacOS, WindowsFast, recommended
Xcode-G XcodemacOS, iOS, visionOSMulti-config, good for debugging
Visual Studio-G "Visual Studio 17 2022" -A x64WindowsMulti-config

Build Commands

Configure (choose one):

cmake -G Ninja -DCMAKE_BUILD_TYPE=Release ..          # Ninja
cmake -G Xcode ..                                      # Xcode
cmake -G "Visual Studio 17 2022" -A x64 ..             # VS 2022

Build all targets:

cmake --build . --config Release

Build specific target:

cmake --build . --config Release --target [PluginName]-vst3

Target Suffixes

FormatTarget Suffix
Standalone App-app
VST2-vst2
VST3-vst3
CLAP-clap
AAX-aax
AUv2-au

Common Options

# Debug build
-DCMAKE_BUILD_TYPE=Debug

# Release build
-DCMAKE_BUILD_TYPE=Release

# Universal binaries (macOS)
-DIPLUG2_UNIVERSAL=ON

# IGraphics backend
-DIGRAPHICS_BACKEND=SKIA -DIGRAPHICS_RENDERER=METAL

# Debug host for plugins
-DIPLUG2_DEBUG_HOST="/Applications/REAPER.app"

Platform-Specific

iOS Device:

cmake -G Xcode -DCMAKE_SYSTEM_NAME=iOS -DIPLUG2_IOS_PLATFORM=OS ..

iOS Simulator:

cmake -G Xcode -DCMAKE_SYSTEM_NAME=iOS -DIPLUG2_IOS_PLATFORM=SIMULATOR ..

visionOS:

cmake -G Xcode -DCMAKE_SYSTEM_NAME=iOS -DIPLUG2_IOS_PLATFORM=VISIONOS ..

Web (Emscripten):

emcmake cmake -G Ninja -DCMAKE_BUILD_TYPE=Release ..
cmake --build . --target [PluginName]-wam

Build Output

Output goes to build/out/:

  • [PluginName].app - Standalone
  • [PluginName].vst3/ - VST3
  • [PluginName].clap/ - CLAP
  • [PluginName].component/ - AUv2
  • [PluginName].aaxplugin/ - AAX

Workflow

  1. Ask for build preferences:

    • Generator (Ninja/Xcode/VS)
    • Configuration (Debug/Release)
    • Specific target or all
    • IGraphics backend if relevant
  2. Configure if needed (only once per build directory)

  3. Build the requested target(s)

  4. Report output location from build/out/

Tips

  • Ninja is fastest for iterative development
  • Xcode generator required for Swift examples (IPlugSwiftUI, IPlugCocoaUI)
  • Use --target to build specific formats and avoid SDK-related failures
  • Check Documentation/cmake.md for full reference