Răsfoiți Sursa

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
Ben Boeckel 2 ani în urmă
părinte
comite
badb6ab120

+ 1 - 0
Help/manual/cmake-cxxmodules.7.rst

@@ -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.

+ 9 - 0
Source/cmVisualStudio10TargetGenerator.cxx

@@ -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);
   }