Building and Organising a Multi-Platform Development Code Base
summary
Argues that runtime introspection (Autotools-style configure) causes long-term maintenance pain, demonstrates converting getdns from Autotools to cmake vs Autotools to produce native Visual Studio builds and swapping OpenSSL for GnuTLS, and proposes organizing code by target/variant hierarchies so platform-specific leaves override common code. Describes an Insignia Geode JVM build generator that handles five OSes, five CPU families and multiple toolchains with no preprocessor spaghetti, and recommends declaring targets explicitly rather than sniffing features.
AI-written summary · about
chapters (23)
- 0:00Introduction
- 1:30Getting dns
- 6:11Crossplatform development
- 10:49Practice
- 13:16Large source files
- 17:10System introspection
- 18:34Larry Wall
- 26:26Verity Stop
- 27:31Is introspection harmful
- 29:49Windows build
- 32:21Common crossplatform practices
- 36:58Bringing order
- 37:23Targets and build variants
- 39:14Build variants
- 42:21Variants
- 46:11Autocomp
- 48:13Internal APIs
- 51:34Platforms
- 52:02Platform Differences
- 52:41Shared Code
- 55:48Target Attributes
- 56:48Build System
- 57:48Example
related talks
01h 02m“What to Expect from a Next-Generation C++ Build System”
01h 34mThings I Learnt While Trying to Avoid Becoming a CMake Expert
41mDesigning a modern build system and dependency manager, how hard can it be?
01h 03mApplied Best Practices
49mBuild Systems: a Simple Solution to a Complicated Problem
34m"Compiling Multi-Million Line C++ Code Bases Effortlessly with the Meson Build System"
46mTame the Cross-Platform Beast
58mDependency Management at the End of the Rainbow
