Useful Links
Computer Science
Other Tools and Technologies
Ninja Build System
1. Introduction to the Ninja Build System
2. Getting Started with Ninja
3. Core Concepts
4. The `.ninja` File Format
5. Integration with Build System Generators
6. Advanced Features and Techniques
7. Performance Characteristics and Optimization
8. Troubleshooting and Debugging
The `.ninja` File Format
Syntax Fundamentals
File Structure
Line-Based Format
Statement Types
Comments
Comment Syntax
Documentation Best Practices
Line Continuation
Backslash Usage
Multi-line Statement Formatting
Character Encoding
UTF-8 Support
Special Character Handling
Variable Expansion
Expansion Syntax
Escaping Mechanisms
Nested Expansion
Variables
Variable Definition
Assignment Syntax
Value Types
Naming Conventions
Variable Scopes
File Scope Variables
Rule Scope Variables
Build Edge Scope Variables
Scope Resolution Rules
Built-in Variables
Input Variables
`$in`
`$in_newline`
Output Variables
`$out`
Build Directory Variables
`$builddir`
Other System Variables
Variable Manipulation
String Operations
Path Manipulation
Conditional Usage
Rules
Rule Definition
Rule Declaration Syntax
Rule Naming Requirements
Rule Structure
Rule Variables
The `command` Variable
Command Line Construction
Variable Substitution
Shell Integration
The `description` Variable
Output Message Customization
Progress Indication
Dependency Variables
`depfile`
Dependency File Specification
Compiler Integration
`deps`
Dependency Types
GCC Mode
MSVC Mode
Response File Variables
`rspfile`
Response File Naming
Usage Conditions
`rspfile_content`
Content Specification
Variable Expansion
Pool Assignment
`pool` Variable
Resource Management
Rule Best Practices
Command Portability
Error Handling
Output Consistency
Build Edges
Build Statement Syntax
Basic Build Statement Structure
Multiple Outputs and Inputs
Syntax Variations
Output Specification
Explicit Outputs
Primary Output Files
Multiple Output Handling
Implicit Outputs
Secondary Output Files
Syntax and Usage
Input Specification
Explicit Inputs
Source Files
Generated Dependencies
Implicit Dependencies
Header Dependencies
Tool Dependencies
Syntax Usage
Order-Only Dependencies
Build Ordering
Non-Rebuild Dependencies
Syntax and Applications
Build Edge Variables
Edge-Specific Variable Assignment
Variable Override Mechanisms
Scope and Precedence
Special Constructs
Default Targets
Default Target Declaration
Multiple Default Targets
Target Selection Logic
Phony Rules and Targets
Phony Rule Definition
Common Phony Targets
`all` Target
`clean` Target
`test` Target
Use Cases and Patterns
Subninja
File Inclusion Syntax
Path Resolution
Namespace Management
Modular Build Organization
Pools
Pool Definition
Pool Declaration Syntax
Depth Configuration
Pool Assignment
Rule Pool Assignment
Resource Limitation
Built-in Pools
Console Pool
Default Pool Behavior
Custom Pool Creation
Resource-Specific Pools
Performance Tuning
Previous
3. Core Concepts
Go to top
Next
5. Integration with Build System Generators