5.5 KiB
5.5 KiB
Build Presets Guide
This document explains the reorganized CMake preset system for Yaze.
Design Principles
- Short, memorable names - No more
macos-dev-z3ed-ai, justmac-ai - Warnings off by default - Add
-vsuffix for verbose (e.g.,mac-dbg-v) - Clear architecture support - Explicit ARM64 and x86_64 presets
- Platform prefixes -
mac-,win-,lin-for easy identification
Quick Start
macOS Development
# Most common: AI-enabled development
cmake --preset mac-ai
cmake --build --preset mac-ai
# Basic debug build (no AI)
cmake --preset mac-dbg
cmake --build --preset mac-dbg
# Verbose warnings for debugging
cmake --preset mac-dbg-v
cmake --build --preset mac-dbg-v
# Release build
cmake --preset mac-rel
cmake --build --preset mac-rel
Windows Development
# Debug build (x64)
cmake --preset win-dbg
cmake --build --preset win-dbg
# AI-enabled development
cmake --preset win-ai
cmake --build --preset win-ai
# ARM64 support
cmake --preset win-arm
cmake --build --preset win-arm
All Presets
macOS Presets
| Preset | Description | Arch | Warnings | Features |
|---|---|---|---|---|
mac-dbg |
Debug build | ARM64 | Off | Basic |
mac-dbg-v |
Debug verbose | ARM64 | On | Basic |
mac-rel |
Release | ARM64 | Off | Basic |
mac-x64 |
Debug x86_64 | x86_64 | Off | Basic |
mac-uni |
Universal binary | Both | Off | Basic |
mac-dev |
Development | ARM64 | Off | ROM tests |
mac-ai |
AI development | ARM64 | Off | z3ed, JSON, gRPC, ROM tests |
mac-z3ed |
z3ed CLI | ARM64 | Off | AI agent support |
mac-rooms |
Dungeon editor | ARM64 | Off | Minimal build for room editing |
Windows Presets
| Preset | Description | Arch | Warnings | Features |
|---|---|---|---|---|
win-dbg |
Debug build | x64 | Off | Basic |
win-dbg-v |
Debug verbose | x64 | On | Basic |
win-rel |
Release | x64 | Off | Basic |
win-arm |
Debug ARM64 | ARM64 | Off | Basic |
win-arm-rel |
Release ARM64 | ARM64 | Off | Basic |
win-dev |
Development | x64 | Off | ROM tests |
win-ai |
AI development | x64 | Off | z3ed, JSON, gRPC, ROM tests |
win-z3ed |
z3ed CLI | x64 | Off | AI agent support |
Linux Presets
| Preset | Description | Compiler | Warnings |
|---|---|---|---|
lin-dbg |
Debug | GCC | Off |
lin-clang |
Debug | Clang | Off |
Special Purpose
| Preset | Description |
|---|---|
ci |
Continuous integration (no ROM tests) |
asan |
AddressSanitizer build |
coverage |
Code coverage build |
Warning Control
By default, all presets suppress compiler warnings with -w for a cleaner build experience.
To Enable Verbose Warnings:
- Use a preset with
-vsuffix (e.g.,mac-dbg-v,win-dbg-v) - Or set
YAZE_SUPPRESS_WARNINGS=OFFmanually:cmake --preset mac-dbg -DYAZE_SUPPRESS_WARNINGS=OFF
Architecture Support
macOS
- ARM64 (Apple Silicon):
mac-dbg,mac-rel,mac-ai, etc. - x86_64 (Intel):
mac-x64 - Universal Binary:
mac-uni(both ARM64 + x86_64)
Windows
- x64:
win-dbg,win-rel,win-ai, etc. - ARM64:
win-arm,win-arm-rel
Build Directories
Most presets use build/. WASM presets use build-wasm/. Use CMakeUserPresets.json for custom directories.
Feature Flags
Common CMake options you can override:
# Enable/disable components
-DYAZE_BUILD_TESTS=ON/OFF
-DYAZE_BUILD_Z3ED=ON/OFF
-DYAZE_BUILD_EMU=ON/OFF
-DYAZE_BUILD_APP=ON/OFF
# AI features
-DZ3ED_AI=ON/OFF
-DYAZE_WITH_JSON=ON/OFF
-DYAZE_WITH_GRPC=ON/OFF
# Testing
-DYAZE_ENABLE_ROM_TESTS=ON/OFF
-DYAZE_TEST_ROM_PATH=/path/to/zelda3.sfc
# Build optimization
-DYAZE_MINIMAL_BUILD=ON/OFF
Examples
Development with AI features and verbose warnings
cmake --preset mac-dbg-v -DZ3ED_AI=ON -DYAZE_WITH_GRPC=ON
cmake --build --preset mac-dbg-v
Release build for distribution (macOS Universal)
cmake --preset mac-uni
cmake --build --preset mac-uni
cpack --preset mac-uni
Quick minimal build for testing
cmake --preset mac-dbg -DYAZE_MINIMAL_BUILD=ON
cmake --build --preset mac-dbg -j12
Updating compile_commands.json
After configuring with a new preset, copy the compile commands for IDE support:
cp build/compile_commands.json .
This ensures clangd and other LSP servers can find headers and understand build flags.
Migration from Old Presets
Old preset names have been simplified:
| Old Name | New Name |
|---|---|
macos-dev-z3ed-ai |
mac-ai |
macos-debug |
mac-dbg |
macos-release |
mac-rel |
macos-debug-universal |
mac-uni |
macos-dungeon-dev |
mac-rooms |
windows-debug |
win-dbg |
windows-release |
win-rel |
windows-arm64-debug |
win-arm |
linux-debug |
lin-dbg |
linux-clang |
lin-clang |
Troubleshooting
Warnings are still showing
- Make sure you're using a preset without
-vsuffix - Check
cmakeoutput for✓ Warnings suppressedmessage - Reconfigure and rebuild:
rm -rf build && cmake --preset mac-dbg
clangd can't find nlohmann/json
- Run
cmake --preset <your-preset>to regenerate compile_commands.json - Copy to root:
cp build/compile_commands.json . - Restart your IDE or LSP server
Build fails with missing dependencies
- Ensure submodules are initialized:
git submodule update --init --recursive - For AI features, make sure you have OpenSSL:
brew install openssl(macOS)