Skip to content

Building the SWS Extension

Christian Fillion edited this page Dec 20, 2021 · 32 revisions

Software requirements:

  • A CMake-supported build system or IDE (eg. GNU make, Ninja, Visual Studio–see the Generators section below)
  • A C++11 compiler (MSVC on Windows)
  • CMake 3.13.3 or newer
  • git, Perl (optional) and PHP

Supported platforms:

  • Linux (x86_64, i686, armv7l, aarch64)
  • macOS (x86_64, i386, arm64)
  • Windows (x64, x86)

MSVC can be installed with the Build Tools for Visual Studio or the Visual Studio IDE. On macOS 10.10+, the build tools can be installed using xcode-select --install or the Xcode IDE (version 7 or newer, up to version 9 for 32-bit support).

Usage

# Step 1: Clone the repository and submodules
git clone --recursive https://github.com/reaper-oss/sws
cd sws

# Step 2: Create and configure a build tree
cmake -B build -DCMAKE_BUILD_TYPE=Debug

# Step 3: Compile SWS
cmake --build build
# or additionally copy it into your REAPER resource path
cmake --build build --target install

# Step 4 (optional): Generate distribution packages
(cd build && cpack)

The following targets are available:

  • all: Build SWS and the Python ReaScript API wrapper (default target)
  • clean: Delete all generated files (can be run before building another target using --clean-first)
  • install: Build and install SWS into REAPER's resource directory (as specified in CMAKE_INSTALL_PREFIX)
  • langpack: Generate SWS_Template.ReaperLangPack into <build dir>/BuildUtils
  • whatsnew: Generate whatsnew.html into <build dir>/BuildUtils

Learn more about using CMake

Build configuration

cmake -B build \
  -DBUILD_SWS_PYTHON=YES             \ # requires Perl
  -DUSE_SYSTEM_TAGLIB=NO             \
  -DCMAKE_BUILD_TYPE=Release         \ # Debug, Release, RelWithDebInfo or MinSizeRel
  -DCMAKE_OSX_ARCHITECTURES=x86_64   \ # i386, x86_64 or arm64
  -DCMAKE_OSX_DEPLOYMENT_TARGET=10.5 \ # lowest supported macOS version
  -DCMAKE_INSTALL_PREFIX="/path/to/reaper/resource/directory"

# Default install prefix:
# Linux:   ~/.config/REAPER
# macOS:   ~/Library/Application Support/REAPER
# Windows: %APPDATA%\REAPER

Multiple build configurations can be setup as subdirectories of the build folder (it's .gitignore-ed to not clutter the main source tree).

cmake -B build/debug -DCMAKE_BUILD_TYPE=Debug
cmake --build build/debug

cmake -B build/release -DCMAKE_BUILD_TYPE=Release
cmake --build build/release

Generators

By default CMake generates Unix Makefiles on Linux & macOS and Visual Studio project files on Windows.

cmake -B build -G Ninja # faster & recommended (use x64 or x86 Native Tools Command Prompt for VS20XX)
cmake -B build -G "Visual Studio 16 2019" -A x64
cmake -B build -G "Visual Studio 15 2017 Win64"
cmake -B build -G Xcode

CMAKE_BUILD_TYPE has no effect when using multi-configuration generators such as the Visual Studio or Xcode project generators. The build type is instead set using the --config option in the build phase.

cmake --build build --config RelWithDebInfo

Learn more about CMake Generators

Visual Studio

(Visual Studio 2019 or newer)

Use "Open a local folder" or File > Open > CMake. Visual Studio defaults to the Ninja generator when opening a CMake-based source directory.

Put your REAPER installation's resource path into Visual Studio's CMakeSettings.json > Show advanced settings > Install directory or the "installRoot" key (save to apply the new settings).

Configuring the install directory

In View > Solution explorer: click on "Switch view" in the toolbar and select "CMake Targets View". Right click on "sws (shared library)":

  1. Set As Startup Project > reaper_sws-x64.dll (Install)
  2. Debug and launch settings > reaper_sws-x64.dll (Install)
  3. Write the path to your reaper.exe in the "exe" key (launch.vs.json). Backslashes must be escaped.