Useful Links
Computer Science
Other Tools and Technologies
Make Build Tool
1. Introduction to Build Automation and Make
2. Getting Started with Makefiles
3. Variables and Macros
4. Rules and Patterns
5. Functions
6. Conditional Processing
7. Managing Complex Projects
8. Advanced Topics and Best Practices
9. Make Beyond Compilation
Variables and Macros
Introduction to Variables
Purpose and Benefits
Variable Naming Conventions
Scope and Visibility
Variable Types Overview
Defining Variables
Simply Expanded Variables (:=)
Immediate Expansion
Use Cases
Performance Implications
Recursively Expanded Variables (=)
Deferred Expansion
Use Cases
Recursive References
Conditionally Assigned Variables (?=)
Default Value Assignment
Overriding Behavior
Environment Variable Interaction
Appending to Variables (+=)
Adding Values to Existing Variables
Order of Evaluation
Whitespace Handling
Override Variables
Command Line Override Protection
Syntax and Usage
Referencing Variables
Basic Syntax
$(VAR) Form
${VAR} Form
Single Character Variables
Variable Substitution
Nested Variable References
Escaping Dollar Signs
Variable Expansion Timing
Automatic Variables
Target-Related Variables
$@ (The Target)
$(@D) (Target Directory)
$(@F) (Target Filename)
Prerequisite-Related Variables
$< (The First Prerequisite)
$^ (All Prerequisites)
$+ (All Prerequisites with Duplicates)
$? (Newer Prerequisites)
Pattern-Related Variables
$* (The Stem)
$% (Archive Member)
Contexts for Automatic Variables
Recipe Context
Prerequisite Context
Pattern Rule Context
Predefined and Environment Variables
Common Predefined Variables
CC (C Compiler)
CXX (C++ Compiler)
CFLAGS (C Compiler Flags)
CXXFLAGS (C++ Compiler Flags)
LDFLAGS (Linker Flags)
LDLIBS (Libraries)
RM (Remove Command)
MAKE (Make Program)
Environment Variable Integration
Automatic Import
Variable Precedence
Export to Subprocesses
Overriding Variables from the Command Line
Command Line Syntax
Precedence Rules
Override Directive
Previous
2. Getting Started with Makefiles
Go to top
Next
4. Rules and Patterns