Behind the Scenes of a C++ Build System
summary
Meson is used to show concrete solutions: Ninja drives processes but Windows forces fragile quoting and use of response files; cross compilation and bootstrapping requires tools that run without Java or modern Go so Python ends up as a pragmatic implementation choice. Incremental linking uses the Chromium idea of extracting exported symbol lists so relinks of dozens of test executables often disappear, turning O(N) relinks into O(1) rebuilds by leveraging shared libraries. Containerized rootfs/flatpak isolation plus kernel namespaces avoids version conflicts across builds.
AI-written summary · about
chapters (9)
- 0:00Introduction
- 1:14Visible problems and messengers
- 3:01Process invocation challenges
- 7:17Core vs app build systems
- 11:55Optimizing build space
- 14:30Designing a build system
- 17:39Dependency management approaches
- 25:06Why build systems are terrible
- 27:53Q&A session
related talks
41mDesigning a modern build system and dependency manager, how hard can it be?
47mLessons Learned From Porting LibreOffice's Build System To Meson
46mBuilding and Packaging Modern C++
01h 04mBetter CMake: A World Tour of Build Systems - Better C++ Builds
37mCross-Building Strategies in the Age of C++ Package Managers
54mCMake for the Impatient
01h 34mThings I Learnt While Trying to Avoid Becoming a CMake Expert
26mBuilding for Heterogeneous Systems
