with one click
build-cmake
// Build an iPlug2 plugin project using CMake with Ninja, Xcode, or Visual Studio generators
// Build an iPlug2 plugin project using CMake with Ninja, Xcode, or Visual Studio generators
This skill should be used when the user asks to "create a UI", "add controls", "layout controls", "design the interface", "add a knob", "add a slider", "add a button", "add a meter", "add a spectrum analyzer", "style controls", "theme the UI", "use IVStyle", "use ISender", "create a custom control", "add a keyboard", "make a resizable UI", or discusses IGraphics layout, control selection, styling, or visualization in an iPlug2 plugin.
This skill should be used when the user asks to "add a parameter", "define parameters", "create an enum parameter", "add a gain control", "add a frequency parameter", "use parameter groups", "randomize parameters", "reset to defaults", "smooth a parameter", "use LogParamSmooth", "create presets", "serialize state", "handle OnParamChange", "copy parameter values", "use InitDouble", "use InitEnum", "use InitBool", "use parameter shapes", "use ShapePowCurve", "parameter flags", or discusses parameter definition, grouping, batch operations, smoothing, presets, or state serialization in an iPlug2 plugin.
This skill should be used when the user asks to "create a web UI", "add a WebView", "build an HTML interface", "use Svelte", "use p5.js", "use three.js", "use React", "use web components", "send messages to JavaScript", "receive messages from JavaScript", "hot reload the UI", "use IWebViewControl", "embed a WebView", "WebView editor delegate", "use IPlugSendMsg", "web-based plugin UI", "load HTML in plugin", "use Vite", or discusses WebView setup, JS/C++ messaging, or web framework integration in an iPlug2 plugin.
Take a screenshot of the plugin UI using the standalone app CLI for debugging and documentation
Validate iPlug2 plugin builds using format-specific validators (auval, pluginval, vstvalidator, clap-validator) (project)
Build an iPlug2 plugin project for different formats and platforms using xcodebuild or Visual Studio
| name | build-cmake |
| description | Build an iPlug2 plugin project using CMake with Ninja, Xcode, or Visual Studio generators |
Use this skill when the user wants to build their plugin project using CMake.
/setup-depscd [ProjectFolder]
mkdir -p build && cd build
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release ..
cmake --build .
| Generator | Command | Platform | Notes |
|---|---|---|---|
| Ninja | -G Ninja | macOS, Windows | Fast, recommended |
| Xcode | -G Xcode | macOS, iOS, visionOS | Multi-config, good for debugging |
| Visual Studio | -G "Visual Studio 17 2022" -A x64 | Windows | Multi-config |
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
| Format | Target Suffix |
|---|---|
| Standalone App | -app |
| VST2 | -vst2 |
| VST3 | -vst3 |
| CLAP | -clap |
| AAX | -aax |
| AUv2 | -au |
# 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"
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
Output goes to build/out/:
[PluginName].app - Standalone[PluginName].vst3/ - VST3[PluginName].clap/ - CLAP[PluginName].component/ - AUv2[PluginName].aaxplugin/ - AAXAsk for build preferences:
Configure if needed (only once per build directory)
Build the requested target(s)
Report output location from build/out/
--target to build specific formats and avoid SDK-related failures