Managing C++ Projects Using CMake
Object Files and the Linking Process
The linker's role in the build process, how it resolves symbols to combine object files, and how to troubleshoot common errors.
Managing C++ Projects Using CMake
Static and Shared Libraries
The difference between static and dynamic libraries, how to create them, and the trade-offs between them.
Managing C++ Projects Using CMake
Organizing a C++ Project
Learn how to structure your C++ projects for scalability and maintainability, from basic directory layouts to managing multiple modules.
Managing C++ Projects Using CMake
Managing Libraries and Dependencies
Learn to manage third-party libraries in C++, covering include/library paths, static vs. shared libraries, versioning, and platform differences.
Managing C++ Projects Using CMake
Automated Build Systems and Their Limitations
An introduction to traditional build tools like Makefiles and IDE projects, highlighting the maintenance, scalability, and cross-platform challenges that result
Managing C++ Projects Using CMake
Writing a CMakeLists File
Creating the bare minimum CMakeLists.txt file and build up to a project with an executable and a library, learning the fundamental commands along the way.
Managing C++ Projects Using CMake
CMake Conditionals and Loops
Transform your static build descriptions into dynamic scripts with CMake's control flow commands, if() and foreach().
Managing C++ Projects Using CMake
Working with the File System
Exploring CMake's file() command, covering how to read, write, copy, and glob files, and how to manipulate paths.
Managing C++ Projects Using CMake
Modularizing CMake Code
Learn to create reusable logic with CMake functions and macros, and how to organize them into modules for clean, scalable build systems.
Managing C++ Projects Using CMake
Indirect Relationships and the Dependency Graph
Discover how CMake's target_link_libraries() command builds a dependency graph, and how it uses this graph to automatically manage transitive dependencies and link order.
Managing C++ Projects Using CMake
Using INTERFACE, ALIAS, and IMPORTED Libraries
Learn to use abstract target types like INTERFACE, ALIAS, and IMPORTED to model complex project needs, organize build properties, and integrate pre-compiled binaries.
Managing C++ Projects Using CMake
Using Shared Libraries
Adding support for user-configurable library types and an initial introduction to target installation.