Build and test¶
The SDK stays external; nothing is installed, registered or linked into a
plug-in folder. Bundles are ad-hoc signed in place inside the build tree.
The native tests read the in-module Rust allocation counter, so build the
archive with allocation-probe:
cargo build --release -p ravet-vst3-reference-native --features allocation-probe
cmake -S examples/vst3-reference -B target/vst3-reference \
-DCMAKE_BUILD_TYPE=Release -DRAVET_VST3_SDK=/path/to/vst3sdk \
-DRAVET_VST3_REFERENCE_LIBRARY=$PWD/target/release/libravet_vst3_reference_native.a
cmake --build target/vst3-reference --parallel 2
ctest --test-dir target/vst3-reference --output-on-failure
cargo build --release -p ravet-host --features vst3-hosted-audio \
--example vst3-reference-bank
M=target/vst3-reference/VST3/Release
cmake -S crates/ravet-host/native/vst3 -B target/vst3-host -DBUILD_TESTING=ON \
-DCMAKE_BUILD_TYPE=Release -DRAVET_VST3_SDK=/path/to/vst3sdk \
"-DRAVET_VST3_REFERENCE_MODULES=$PWD/$M/ravet_sidechain_vst3.vst3;$PWD/$M/ravet_event_probe_vst3.vst3" \
-DRAVET_VST3_REFERENCE_BANK_LIBRARY=$PWD/target/release/examples/libvst3_reference_bank.a
cmake --build target/vst3-host --parallel 2
ctest --test-dir target/vst3-host -R reference --output-on-failure
The reference project forces SMTG_CREATE_PLUGIN_LINK off and
SMTG_PLUGIN_TARGET_USER_PATH empty, and fails configuration otherwise. For
each bundle it registers three tests:
- a strict ad-hoc signature check (
Signature=adhoc); - a no-install check: the bundle is under the build tree, no
cmake_installrule names it, and neither default VST3 folder (user or system) holds a copy or link; - the SDK
validator.
Without RAVET_VST3_REFERENCE_MODULES, the native host project still compiles
the reference test executables, registers no tests for them, and prints a
configure-time status message. Without RAVET_VST3_REFERENCE_BANK_LIBRARY it
skips the Rust bank executable.