| name | building |
| description | Build, test, and run MAGDA DAW. Use when compiling, running tests, or launching the app. Always use Makefile commands, never raw cmake/ninja. |
Building MAGDA
Always use Makefile targets. Never use cmake or ninja directly.
Build Commands
| Command | Purpose |
|---|
make debug | Debug build (default) |
make release | Release build |
make configure | Force CMake reconfigure |
make clean | Remove all build artifacts |
make rebuild | Clean + debug build |
Test Commands
| Command | Purpose |
|---|
make test | Build and run all tests |
make test-build | Build tests only |
make test-verbose | Run tests with verbose output |
make test-list | List all available tests |
make test-window | Plugin window tests only |
make test-shutdown | Shutdown sequence tests only |
make test-threading | Thread safety tests only |
Run Commands
| Command | Purpose |
|---|
make run | Build and launch app (GUI) |
make run-console | Build and run with stdout visible |
make run-profile | Run with performance profiling |
Code Quality
| Command | Purpose |
|---|
make format | clang-format all source files |
make lint | clang-tidy on all sources |
make lint-changed | clang-tidy on modified files only |
make lint-file FILE=path | clang-tidy on a specific file |
Build Directories
- Debug:
cmake-build-debug/
- Release:
cmake-build-release/
Key Notes
- Debug build directory is
cmake-build-debug, NOT build/
- Test binary is at
cmake-build-debug/tests/magda_tests
- App bundle is at
cmake-build-debug/magda/daw/magda_daw_app_artefacts/Debug/MAGDA.app
- Pre-commit hooks run clang-format automatically; if commit fails due to formatting, re-stage and commit again
When to Build
- Small cosmetic / non-logic changes (UI sizes, paddings, colors, icon swaps, layout tweaks, comment edits, gitignore, etc.): do NOT build automatically. The user prefers to build these themselves. Just make the change and stop.
- Logic changes (new functions, control flow, state management, threading, audio code, refactors, anything that could compile-fail or introduce bugs): always build to verify it compiles and to catch errors early.
- When unsure, ask the user whether they want you to build.