- Reorganized CMake preset system, simplifying names and enhancing architecture support. - Introduced new presets for macOS and Windows development, including AI-enabled and verbose options. - Updated documentation to reflect changes in preset usage, design principles, and troubleshooting steps. - Removed outdated documents related to stability improvements and modularization plans to streamline resources.
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/ directory. Exceptions:
mac-rooms: Usesbuild_rooms/to avoid conflicts
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
-DYAZE_USE_MODULAR_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)