VS: Explicitly disallow C++ modules provided by imported targets

The `-ifcOnly` flag is understood by MSBuild, but there are unresolved
questions about how to integrate with with CMake's model.

See: #25328
This commit is contained in:
Ben Boeckel
2023-10-16 15:42:21 -04:00
parent 7080b4ae83
commit badb6ab120
2 changed files with 10 additions and 0 deletions

View File

@@ -68,5 +68,6 @@ For the :ref:`Visual Studio Generators`:
- Only Visual Studio 2022 and MSVC toolsets 14.34 (Visual Studio
17.4) and newer.
- No support for exporting or installing BMI or module information.
- No support for compiling BMIs from ``IMPORTED`` targets with C++ modules.
- No diagnosis of using modules provided by ``PRIVATE`` sources from
``PUBLIC`` module sources.

View File

@@ -358,6 +358,15 @@ std::ostream& cmVisualStudio10TargetGenerator::Elem::WriteString(
void cmVisualStudio10TargetGenerator::Generate()
{
if (this->GeneratorTarget->IsSynthetic()) {
this->GeneratorTarget->Makefile->IssueMessage(
MessageType::FATAL_ERROR,
cmStrCat("Target \"", this->GeneratorTarget->GetName(),
"\" contains C++ modules intended for BMI-only compilation. "
"This is not yet supported by the Visual Studio generator."));
return;
}
for (std::string const& config : this->Configurations) {
this->GeneratorTarget->CheckCxxModuleStatus(config);
}