Speclet Commands

May 19, 2026 ยท View on GitHub

This document lists the steps and commands that were executed to set up the project or that can be used to build and test the project.

Install Tools

Initial build

cmake -Bbuild -DJUCE_BUILD_EXTRAS=ON -DJUCE_BUILD_EXAMPLES=OFF -DCMAKE_BUILD_TYPE:STRING=Debug -G Ninja
cmake --build build

Build AudioPluginHost to test the plugin

cmake.exe --build build --config Debug --target AudioPluginHost

Run Unit-Tests

This project uses Catch2 for unit testing and CTest for test execution.

In case needed, the unit tests can be built with the following command.

cmake.exe --build build --config Debug --target SpecletTests

From the root directory, start the unit test with the following command.

ctest --test-dir build/test

Code Quality Analysis with clang-tidy

This project uses clang-tidy for static code analysis.

Local clang-tidy analysis

First, ensure clang-tools is installed on your system:

macOS:

brew install llvm

Linux (Ubuntu/Debian):

sudo apt-get install clang-tools

Then run clang-tidy on all project source files:

cd build
find ../src -type f \( -name '*.cpp' -o -name '*.h' \) -print0 | xargs -0 clang-tidy -p .

Or analyze specific files:

cd build
clang-tidy -p . ../src/SpecletPluginProcessor.cpp

Continuous Integration

clang-tidy is automatically run on Linux and macOS in the GitHub Actions CI/CD pipeline. Results are displayed in the build logs.

Create and update package-lock.cmake

As described in CPM Package-lock, package-lock.cmake can be created and updated using the following commands:

cmake -H. -Bbuild
cmake --build build --target cpm-update-package-lock 

The advantage of this approach is that there is one distinct file that contains all dependencies and versions. Renovate is used to update those dependencies automatically as configured in renovate.json.