[clang-tools-extra] [clangd] [C++20] [Modules] Introduce initial support for C++20 Modules (PR #66462)
Ben Boeckel via cfe-commits
cfe-commits at lists.llvm.org
Mon Oct 9 04:58:05 PDT 2023
================
@@ -45,6 +45,10 @@ class GlobalCompilationDatabase {
return std::nullopt;
}
+ virtual std::vector<std::string> getAllFilesInProjectOf(PathRef File) const {
----------------
mathstuf wrote:
Probably easiest to see it by the writer code [here](https://gitlab.kitware.com/ben.boeckel/cmake/-/commit/9866da328034fbb3a0e96f5cca81e913c0ab8678#b94b7587efb540b6ad866ae5620492d78f6cff24_0_23). Basically, it is:
```json
{
"version": 1,
"revision": 0,
"module_sets": [
{
"name": "unique name of module set",
"visible_module_sets": [
"module sets",
"which can satisfy",
"required modules within this module set",
],
"modules": [
"work-directory": "/path/to/working/directory",
"source": "path/to/source/file",
"name": "name.of.provided.module",
"private": false,
"requires": [
"list",
"of",
"required",
"modulest"
],
"flag_sets": [
"-fstandalone-flag",
["-fflag", "with-arg"],
]
]
}
]
}
```
The semantics are:
- module sets may refer to other module sets named in order to satisfy their required modules;
- however, private modules in other module sets are not usable;
- `work-directory` is optional;
- `private` defaults to `false`;
- flag sets need to be used to compile the BMI in question (Daniel Ruoso's "local preprocessor arguments");
- flags may be deduplicated/merged by top-level identities.
https://github.com/llvm/llvm-project/pull/66462
More information about the cfe-commits
mailing list