Using vcpkg in anger
summary
Three years of production use reveals concrete vcpkg pitfalls and workarounds: use manifest mode and always pin a baseline because built‑in baselines change (one Friday commit broke CI), minimal version selection and mixed version schemes let fmt jump from 9.1 to 10 and produce breakage, overrides don’t propagate to transitive deps, Boost subpackages can split across 1.79/1.80 and link incorrectly, default features reappear transitively and can balloon builds to ~45 packages, and custom triplets let you target x64/ARM/Linux/macOS/Windows and enable sanitizers and LTO.
AI-written summary · about
chapters (32)
- 0:00vcpkg in production
- 1:05What this talk is and isn't about
- 2:07Manifest vs classic mode
- 2:53Need for version baselines
- 3:58Built-in baselines dangers
- 5:45Minimal version selection
- 6:27Baselines override constraints
- 8:37Override limitations
- 10:42Port availability failures
- 11:48Version conflicts
- 13:13Version types
- 15:20Runtime version mismatches
- 16:46Boost compatibility pitfalls
- 18:52Boost conflict workarounds
- 20:17Default features misfeature
- 21:51Transitive default features
- 24:18Unnecessary FFmpeg builds
- 26:06Helper packages CI issues
- 27:51Pinning vcpkg checkout risk
- 28:52vcpkg good parts
- 29:15Project setup with vcpkg
- 30:19Curated baselines benefits
- 30:59Exposing build systems
- 31:46Customizing with triplets
- 32:50CPU features in triplets
- 33:34Symbol visibility control
- 33:56Sanitizers rebuild needs
- 34:38Language standards enforcement
- 35:01Link-time optimization
- 35:25Advantages over Conan
- 37:58Conclusion and when to keep using vcpkg
- 39:51Q&A
related talks
09mAn Overview of vcpkg in 10 Minutes
42mManage code dependencies at work with new vcpkg features
10mStay calm and stress-free by using a package manager: an overview of vcpkg
37mCross-Building Strategies in the Age of C++ Package Managers
01h 11mThe State of Package Management in C++
01h 01m10 Problems Large Companies Have Managing C++ Dependencies and How to Solve Them
01h 01mPackage management in C++
01h 12mC++ Package Manager - C++ Dependencies Don't Have To Be Painful!
