Beyond Compilation Databases to Support C++ Modules: Build Databases
Talkat CppCon 2024 · on Wednesday, 2024-09-18· at 15:15· Spruce 3/4, 6700 North Gaylord Rockies Boulevard·
summary
Clang-style compile_commands.json cannot describe C++ modules so a new JSON format (P2977) records ordered sets and families of translation units, per-unit BMI paths, visibility (private/public), baseline and local args, and a uniqueness constraint on object outputs. CMake implements experimental export to build_database.json (CMake 3.31, Ninja generator only) by running scan/collation steps (a few build targets) during the build. It works today for C++ TUs but lacks broad generator and cross-flag compatibility support yet.
AI-written summary · about
chapters (19)
- 0:00Introduction
- 1:25Compilation databases limits
- 6:04C++ modules complexity
- 10:17CMake and C++ modules
- 13:32Missing data in compilation DBs
- 16:26Build databases solution
- 24:41Build DB standardization status
- 26:51Generating build DB with CMake
- 31:32Q&A: Module installation
- 33:36Q&A: Build DB output scaling
- 34:40Q&A: Faster builds with modules
- 35:45Q&A: AST analysis with build DB
- 37:31Q&A: Custom build steps
- 40:01Q&A: Build DB tool support
- 41:04Q&A: Codegen from module interfaces
- 43:10Q&A: Module adoption hurdles
- 44:37Q&A: Build DB with generated sources
- 46:22Q&A: IDE integration
- 47:08Q&A: Incompatible flags timeline








