Embracing Modern CMake
summary
Argues that “Modern CMake” is a target‑centric style introduced around 2011 and present since CMake 3.1 (Dec 2014), urging migration from directory variables and include_directories to target_include_directories and target_compile_definitions, using target_link_libraries with double‑colon names (e.g. Qt5::Widgets) and imported/alias targets so CMake enforces build order and usage requirements. Covers PUBLIC/PRIVATE/INTERFACE semantics, generator expressions for config‑time conditions, policies via cmake_minimum_required, and notes recent additions like target precompiled headers.
AI-written summary · about
chapters (19)
- 0:00Start
- 0:42Background
- 5:20The Good News
- 10:22When to Set a Polry to OLD
- 13:00Modern Make Guidelines
- 14:28Defining a Buildsystem
- 20:14Transitive compile dependency
- 22:29Transitive Scope
- 22:50indude directories command
- 26:47Compile Definitions
- 31:34Reliance on variables
- 33:32Problems with variables
- 40:50Generator Expressions basics
- 41:41Truthiness conversion
- 42:17Support for Generator Expressions
- 45:38target_link_libraries
- 48:47Make Target types
- 50:56External dependencies
- 54:42Creating Packages








