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
Managing Complex Projects
Project Structure Organization
Directory Layout Strategies
Source File Organization
Build Output Management
Separating Source and Build Trees
Handling Source Files in Subdirectories
Using VPATH and vpath
VPATH Variable Syntax
vpath Directive Usage
Search Path Ordering
Limitations and Pitfalls
Explicitly Specifying Paths
Relative Path Usage
Absolute Path Considerations
Path Portability Issues
Cross-Platform Path Handling
Subdirectory Build Strategies
Flat Build Structure
Hierarchical Build Structure
Mixed Approaches
Including Other Makefiles
The include Directive
Basic Include Syntax
Multiple File Inclusion
Conditional Inclusion
Error Handling
Include Path Resolution
Search Path Rules
Relative vs. Absolute Includes
Include File Dependencies
Managing Configuration Files
Separating Configuration from Logic
Environment-specific Settings
User Configuration Files
Default Configuration Handling
Modular Makefile Design
Component-based Organization
Shared Rule Libraries
Configuration Modules
Automatic Dependency Generation
The C/C++ Header File Problem
Header Dependency Tracking
Incomplete Build Issues
Manual Dependency Maintenance
Compiler-assisted Dependency Generation
GCC/Clang Dependency Flags
-MMD Flag Usage
-MP Flag Benefits
-MF Flag for Output Files
Generating .d Files
Dependency File Format
Including Generated Dependencies
-include Directive
Conditional Inclusion
Error Handling
Advanced Dependency Techniques
Dependency File Cleanup
Incremental Dependency Updates
Cross-compilation Dependencies
Build System Architecture
Recursive vs. Non-Recursive Make
The Recursive Make Approach
Directory-based Recursion
Parent-Child Communication
Variable Passing
Pros and Cons
The Non-Recursive Make Approach
Single Top-Level Makefile
Centralized Target Management
Include-based Organization
Pros and Cons
Hybrid Approaches
Selective Recursion
Component-based Builds
Mixed Strategies
Previous
6. Conditional Processing
Go to top
Next
8. Advanced Topics and Best Practices