// Build an iPlug2 plugin project using CMake with Ninja, Xcode, or Visual Studio generators
| 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