Useful Links
Computer Science
Other Tools and Technologies
CMake Build System
1. Introduction to Build Systems and CMake
2. Getting Started with CMake
3. CMake Language Fundamentals
4. Projects, Targets, and Properties
5. Managing Dependencies
6. Build Configuration and Toolchains
7. Advanced CMake Topics
8. Testing with CTest
9. Packaging with CPack
10. CMake Best Practices and Patterns
Managing Dependencies
Finding Installed Packages
find_package Command
Purpose and Syntax
Required vs. Optional Packages
Version Specifications
Module Mode vs. Config Mode
Module Mode Search Process
Config Mode Search Process
Search Path Priorities
Writing Find Modules
Find Module Structure
Required Variables
Creating Imported Targets
Handling Components
Writing Config Files
Config File Structure
Exporting Targets
Version Files
Imported Targets
Using Imported Targets
Target Properties
Interface Properties
Including Sub-projects
add_subdirectory Command
Adding Subdirectories to the Build
Directory Structure Considerations
Binary Directory Specification
Variable Scoping with Subdirectories
Scope Inheritance
Passing Variables Between Directories
PARENT_SCOPE Option
Fetching Dependencies at Configure Time
FetchContent Module
Purpose and Use Cases
Advantages over ExternalProject
FetchContent_Declare Command
Declaring Dependencies
Git Repositories
URL Downloads
Local Directories
FetchContent_MakeAvailable Command
Downloading and Adding Dependencies
Population Process
FetchContent Advanced Usage
FetchContent_GetProperties Command
FetchContent_Populate Command
Custom Population Steps
ExternalProject Module
Purpose and Use Cases
Build-Time Dependencies
Differences from FetchContent
ExternalProject_Add Command
Basic Syntax
Download Step Configuration
Configure Step Configuration
Build Step Configuration
Install Step Configuration
Key Arguments
URL and Git Options
SOURCE_DIR and BINARY_DIR
CMAKE_ARGS
BUILD_COMMAND
INSTALL_COMMAND
LOG Options
Integration with Main Build
Dependencies and Ordering
Using ExternalProject Outputs
Previous
4. Projects, Targets, and Properties
Go to top
Next
6. Build Configuration and Toolchains