Basic Usage¶
This guide covers common rninja usage patterns for everyday development.
Running Builds¶
Default Build¶
Build all default targets:
Build Specific Targets¶
Build in Different Directory¶
Use Different Build File¶
Controlling Parallelism¶
Set Job Count¶
# Use all CPU cores (default when -j0 or no -j)
rninja -j0
# Use 8 parallel jobs
rninja -j8
# Use single job (sequential)
rninja -j1
Respect System Load¶
Stop spawning new jobs if system load is high:
Handling Build Failures¶
Stop on First Failure (Default)¶
Continue After Failures¶
Verbose and Debug Output¶
Show Commands¶
Explain Rebuilds¶
Show Statistics¶
Dry Run¶
See what would be built without building:
Example output:
Working with the Cache¶
Check Cache Status¶
Disable Caching Temporarily¶
Clear Cache¶
Using Subtools¶
List Available Tools¶
Common Subtools¶
# Clean build outputs
rninja -t clean
# Show dependencies
rninja -t deps target_name
# Show inputs/outputs for a path
rninja -t query path/to/file
# Generate compilation database
rninja -t compdb > compile_commands.json
# Generate dependency graph
rninja -t graph | dot -Tpng > deps.png
See Subtools Overview for complete documentation.
Build Tracing¶
Generate Chrome trace for performance analysis:
Open chrome://tracing in Chrome and load the file.
JSON Output¶
Get machine-readable output for scripting:
Environment Variables¶
Common environment variables:
# Set cache directory
export RNINJA_CACHE_DIR=/path/to/cache
# Disable caching
export RNINJA_CACHE_ENABLED=0
# Set cache mode
export RNINJA_CACHE_MODE=local # or remote, auto
See Environment Variables for complete list.
Examples by Workflow¶
Development Workflow¶
# Edit code...
# Incremental build
rninja
# Run tests
./run_tests.sh
# Check what changed
rninja -d explain
Clean Build¶
Release Build¶
CI Build¶
Debugging Build Issues¶
# See why things rebuild
rninja -d explain
# Verbose output
rninja -v
# Check dependencies
rninja -t deps problematic_target
# Check target inputs/outputs
rninja -t query problematic_target
Tips and Best Practices¶
Use Appropriate Parallelism¶
- Development: Default (
-j0uses all cores) usually works well - CI: May need limiting if running multiple builds
- Shared machines: Use
-lto respect system load
Leverage Caching¶
- Don't disable caching unless debugging
- Run
rninja -t cache-statsperiodically - Consider remote caching for team builds
Investigate Slow Builds¶
- Generate trace:
rninja --trace trace.json - Open in
chrome://tracing - Look for sequential bottlenecks
Keep Build Files Clean¶
- Declare all dependencies
- Use depfile for auto-detected dependencies
- Run
rninja -t cleandeadto remove stale outputs
Quick Reference¶
| Task | Command |
|---|---|
| Build all | rninja |
| Build target | rninja target |
| Build in dir | rninja -C dir |
| Parallel jobs | rninja -j8 |
| Verbose | rninja -v |
| Explain | rninja -d explain |
| Dry run | rninja -n |
| Clean | rninja -t clean |
| Cache stats | rninja -t cache-stats |
Next Steps¶
-
Complete command-line reference
-
Customize rninja behavior
-
All available subtools