“Don't package your libraries, write packagable libraries!”
summary
Lessons from packaging over 700+ libraries in vcpkg: prefer mainstream buildsystems (CMake/MSBuild), honor CMake defaults like BUILD_SHARED_LIBS, avoid bespoke config checks and silent optional-dependency fallbacks (OpenSSL/LibreSSL example), don't bundle third‑party trees or hardcode one package manager, avoid header‑only traps that create transitive ODRs (Boost case), support cross builds by separating host toolchains (Protocol Buffers does this), hide Windows.h from public headers and include a standard LICENSE file.
AI-written summary · about
chapters (24)
- 0:00Introduction
- 1:13Overview
- 2:15Packaging
- 3:17Build systems
- 4:17Examples
- 5:17Header only is not a panacea
- 7:12Build shared lives
- 8:52Dont use header checks
- 10:11Fragile header checks
- 10:54Autoconfiguration
- 11:56Dont do this
- 12:53Host compilers
- 14:21Package managers
- 15:21Plugins
- 16:01Compiler flags
- 17:12Windows RH
- 17:54Dont have optional dependencies
- 20:35Adopt dependencies quickly
- 21:28Version dont replace API
- 22:19Polyfills
- 23:50API
- 24:57Versions
- 26:47Patterns
- 27:28What are the examples
related talks
01h 01mLessons Learned from Packaging 10,000+ C++ Projects
58mMaking Libraries Consumable for Non-C++ Developers
01h 01mWhy managing C++ dependencies is hard
55mBuilding C++: It Doesn't Have to be Painful!
06mLightning Talk: Know Your Audience: Who’s Building Your C++ Code
01h 12mC++ Package Manager - C++ Dependencies Don't Have To Be Painful!
01h 02mHow you can make a Boost C++ Library
58mThere Will Be Build Systems: I Configure Your Milkshake
