Make Build Tool

  1. Variables and Macros
    1. Introduction to Variables
      1. Purpose and Benefits
        1. Variable Naming Conventions
          1. Scope and Visibility
            1. Variable Types Overview
            2. Defining Variables
              1. Simply Expanded Variables (:=)
                1. Immediate Expansion
                  1. Use Cases
                    1. Performance Implications
                    2. Recursively Expanded Variables (=)
                      1. Deferred Expansion
                        1. Use Cases
                          1. Recursive References
                          2. Conditionally Assigned Variables (?=)
                            1. Default Value Assignment
                              1. Overriding Behavior
                                1. Environment Variable Interaction
                                2. Appending to Variables (+=)
                                  1. Adding Values to Existing Variables
                                    1. Order of Evaluation
                                      1. Whitespace Handling
                                      2. Override Variables
                                        1. Command Line Override Protection
                                          1. Syntax and Usage
                                        2. Referencing Variables
                                          1. Basic Syntax
                                            1. $(VAR) Form
                                              1. ${VAR} Form
                                                1. Single Character Variables
                                                2. Variable Substitution
                                                  1. Nested Variable References
                                                    1. Escaping Dollar Signs
                                                      1. Variable Expansion Timing
                                                    2. Automatic Variables
                                                      1. Contexts for Automatic Variables
                                                        1. Recipe Context
                                                          1. Prerequisite Context
                                                            1. Pattern Rule Context
                                                          2. Predefined and Environment Variables
                                                            1. Common Predefined Variables
                                                              1. CC (C Compiler)
                                                                1. CXX (C++ Compiler)
                                                                  1. CFLAGS (C Compiler Flags)
                                                                    1. CXXFLAGS (C++ Compiler Flags)
                                                                      1. LDFLAGS (Linker Flags)
                                                                        1. LDLIBS (Libraries)
                                                                          1. RM (Remove Command)
                                                                            1. MAKE (Make Program)
                                                                            2. Environment Variable Integration
                                                                              1. Automatic Import
                                                                                1. Variable Precedence
                                                                                  1. Export to Subprocesses
                                                                                  2. Overriding Variables from the Command Line
                                                                                    1. Command Line Syntax
                                                                                      1. Precedence Rules
                                                                                        1. Override Directive