Loading...
Loading...
Ninja build system skill. Use when diagnosing Ninja build failures, understanding Ninja's role as a low-level build executor generated by CMake or other meta-build systems, tuning parallelism, interpreting Ninja output, or working with build.ninja files. Activates on queries about ninja errors, ninja parallelism, ninja verbose output, build.ninja format, or ninja as a CMake generator.
npx skill4agent add mohitmishra786/low-level-dev-skills ninja.ninjabuild.ninja# Configure with Ninja
cmake -S . -B build -G Ninja
cmake --build build # uses ninja internally
# Or invoke ninja directly
cd build && ninja
# Specify parallelism
ninja -j4
ninja -j$(nproc)
# Build specific target
ninja myapp
ninja installNinja Multi-Configcmake -S . -B build -G "Ninja Multi-Config"
cmake --build build --config Release
cmake --build build --config Debug# Show full commands (not just [CC] foo.c)
ninja -v
# Dry run (show what would be built)
ninja -n
# Show why a target needs rebuilding
ninja -d explain myapp
# Print all targets
ninja -t targets all
# Print targets grouped by rule
ninja -t targets rule cc
# Dependency graph (graphviz)
ninja -t graph myapp | dot -Tsvg -o deps.svg| Flag | Effect |
|---|---|
| Parallel jobs (default: CPUs + 2) |
| Don't start new jobs if load average > N |
| Keep going after N failures (default 1) |
| Verbose: show full command lines |
| Dry run |
| Change to |
| Run a sub-tool ( |
ninja -t clean # remove build outputs
ninja -t clean -g # also remove generated filescmake --build build --target cleancompile_commands.jsonclang-tidycmake -S . -B build -G Ninja -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
ln -sf build/compile_commands.json .# Variable
cflags = -Wall -O2
# Rule
rule cc
command = gcc $cflags -c $in -o $out
description = CC $in
# Build edge
build foo.o: cc foo.c
# Phony target
build all: phony foo.o
# Default target
default allrulebuild$in$outphony.PHONY# List all build targets
ninja -t targets
# Query dependencies of a target
ninja -t query myapp
# Clean (already mentioned)
ninja -t clean
# Generate compile_commands.json (if supported by generator)
ninja -t compdb cc cxx > compile_commands.json
# List rules
ninja -t rules| Issue | Cause | Fix |
|---|---|---|
| Missing build rule | Regenerate with CMake; check |
| Build not picking up changes | Stale | Re-run |
| Very slow parallel build | | Use |
| Circular dependency | Rule depends on itself | Check CMake target dependencies |
build.ninjaskills/build-systems/cmakeskills/build-systems/make