Ninja Build System

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