StoneyVCV v2
StoneyDSP Modules for VCV Rack 2.
|
StoneyDSP modules for VCV Rack 2.
Note: We recommend using vcpkg and setting the VCPKG_ROOT
enviroment variable, to acquire some headers and libraries for building, developing, testing, and debugging StoneyVCV for VCV Rack2.
Complete the Setting up your development environment section of the VCV Rack Plugin Development guide. Briefly, you will need the following installations at minimum:
*(NOTE: for Windows, use MSYS's default 'msys' shell to install Rack's dependencies via pacman, and then use the 'mingw64' shell for the commands below, and use unix-style transformed paths, such as /c/Users/...
)*
StoneyVCV can be built in three ways:
plugins/
folder. (Recommended for advanced developers.)Note: We recommend using vcpkg and setting the VCPKG_ROOT
enviroment variable, to acquire some headers and libraries for building, developing, testing, and debugging StoneyVCV for VCV Rack2.
Download or clone the StoneyVCV source code, e.g.
If using the Rack SDK workflow, unzip it (anywhere) and set the RACK_DIR
environment variable by running export RACK_DIR="path/to/unzipped/Rack-SDK"
in the terminal, before running the next commands.
*(NOTE: for Windows, use MSYS's 'mingw64' shell for these commands, and use unix-style transformed paths, such as /c/Users/...
)*
Build StoneyVCV.
Create the distributable plugin package.
The StoneyVCV package is created at dist/<slug>-<version>-<os>-<cpu>.vcvplugin
.
Or you may build, package, and install StoneyVCV to your Rack user folder in one step.
Note: We recommend using vcpkg and setting the VCPKG_ROOT
enviroment variable, to acquire some headers and libraries for developing, testing, and debugging StoneyVCV for VCV Rack2.
StoneyVCV is built and tested using the Rack SDK v2.5.2 for all platforms. We use vcpkg to fetch a fresh copy of the correct SDK files when the below commands are run as shown; the fetched SDK files are parsed into CMake targets, which interface with our testing targets.
We recommend setting the VCPKG_ROOT
environment variable in your shell, and launching your IDE from that shell, to ensure the IDE runs in the correct environment.
*(NOTE: for Windows, use MSYS's 'mingw64' shell for these commands, and use unix-style transformed paths, such as /c/Users/...
)*
Download or clone the StoneyVCV source code, e.g.
Configure the StoneyDSP C++ library, Rack SDK, and Catch2 unit tests, along with StoneyVCV, with CMake and vcpkg:
*(NOTE: vckpg triplets should be one of: "x64-linux"
for Linux, or "x64-osx"
for MacOS, or "x64-mingw-dynamic"
for Windows)*
To build the tests executable:
To run unit tests with Catch2 and CTest:
The unit tests executable should run in the terminal, and eventually indicate the success rate of all the tests combined.
StoneyVCV packs some interesting features into its' design, including some well - thought-out and thoroughly tested build system features.
All Modules, tests, and even the plugin itself are all optionable, by applying different configurations to the C++ compiler pre-processor (i.e., what CMake's 'configure' stage means). Module versioning, dependency injection, downstream deployment integration, and much more has been considered throughout the development cycle of StoneyVCV.
To streamline much of these many options and configurations, we have provided some additional functionality which will brings a lot more control over the build (and deloyment, and debugging, and tests...) under smaller "macro"-like code signatures, with the use of tools such as CMake Presets and Makefile commands.
These additional functions provide a wide coverage of the full feature set of StoneyVCV, usually in just a single command line argument each.
The following CMake Presets are available for easy access to various configurations:
To use a CMake Preset, you can just pass the --preset=
arg to CMake (no other args required):
The above command will configure the plugin for Windows 64-bit in Release mode using the same settings that the Rack-SDK itself implements, respectively
As a further helper, we have also organized our Makefile
to automatically detect a relevant CMake Preset - if not manually chosen - and run CMake for us, using an even simpler command, which works on all platforms:
The above command will configure the plugin for the host machine's platform; the CPU and OS are detected by the Rack-SDK itself, while the common environment variables VERBOSE
and DEBUG
may also be set or unset, to further adapt the behaviour of make workflow
according to your current environment.
Further CMake actions and workflows can be triggered via make
in a similarly environment-sensitive manner:
Runs the CMake configure step to generate the binary directory tree
Clears the current CMake cache file (not dir!) and runs the configure step again
Builds all currently-enabled CMake targets
Runs CTest on the build output directory, executing any tests it finds (i.e., Catch2 unit tests)
Creates a set of distributable packages and installers for the built plugin in the ./build
directory
Creates a set of distributable packages of the source tree in the ./build
directory
The GitHub Workflows in our repository may be a useful reference, if any doubts.
Please feel welcome to submit pull requests of any changes you feel are useful, interesting, or appropriate, along with any technical notes and/or subjective reasoning; you may use one of our PR templates to help you get started - all community contributions are gratefully recieved.