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
Core Concepts
The Build Graph
Graph Structure Fundamentals
Directed Acyclic Graph Properties
Node and Edge Relationships
Nodes (Files)
Input Files
Source Files
Configuration Files
Resource Files
Output Files
Generated Files
Intermediate Files
Final Artifacts
File State Tracking
Edges (Commands)
Rule Association
Command Execution Context
Input-Output Relationships
Dependencies
Explicit Dependencies
Direct File Dependencies
Specification Syntax
Implicit Dependencies
Header File Dependencies
Generated Dependencies
Order-Only Dependencies
Build Ordering Requirements
Non-Rebuild Dependencies
Incremental Builds
Change Detection Mechanisms
File Timestamp Comparison
Content-Based Hashing
Modification Time Tracking
Build State Management
The `.ninja_log` File
Structure and Format
Build History Tracking
Performance Data Collection
State Persistence
Cleanup and Maintenance
Rebuild Decision Logic
When Files Are Rebuilt
Dependency Chain Propagation
Optimization Strategies
Dependency Files
Dependency File Formats
The `.ninja_deps` File
Binary Format Structure
Header Dependency Storage
Access and Querying
Makefile-Style Dependencies
Format Specification
Compiler Integration
Automatic Dependency Generation
C/C++ Header Dependencies
Compiler Flag Configuration
Include Path Handling
Integration with Build Rules
Rule Configuration
Dependency File Processing
Dependency Management Best Practices
Accurate Dependency Specification
Performance Considerations
Parallelism and Performance
Parallel Execution Model
Task Scheduling
Resource Management
Dependency Ordering
Job Control
Default Parallelism Detection
Manual Job Count Specification
Load Balancing
Performance Optimization
Build Graph Optimization
Resource Contention Management
Bottleneck Identification
Previous
2. Getting Started with Ninja
Go to top
Next
4. The `.ninja` File Format