Browse Source

Ninja Multi-Config: Improve error handling when not doing cross-config build

Kyle Edwards 5 years ago
parent
commit
ca9100c5ce

+ 9 - 3
Source/cmGlobalNinjaGenerator.cxx

@@ -1192,7 +1192,10 @@ void cmGlobalNinjaGenerator::WriteTargetAliases(std::ostream& os)
       this->AppendTargetOutputs(ta.second.GeneratorTarget, build.ExplicitDeps,
                                 ta.second.Config);
     }
-    this->WriteBuild(os, build);
+    this->WriteBuild(this->EnableCrossConfigBuild()
+                       ? os
+                       : *this->GetConfigFileStream(ta.second.Config),
+                     build);
   }
 
   if (this->IsMultiConfig()) {
@@ -1259,7 +1262,10 @@ void cmGlobalNinjaGenerator::WriteFolderTargets(std::ostream& os)
         }
       }
       // Write target
-      this->WriteBuild(os, build);
+      this->WriteBuild(this->EnableCrossConfigBuild()
+                         ? os
+                         : *this->GetConfigFileStream(config),
+                       build);
     }
 
     // Add shortcut target
@@ -1282,7 +1288,7 @@ void cmGlobalNinjaGenerator::WriteFolderTargets(std::ostream& os)
       }
       build.Outputs.front() = this->BuildAlias(
         this->ConvertToNinjaPath(currentBinaryDir + "/all"), "all");
-      this->WriteBuild(*this->GetCommonFileStream(), build);
+      this->WriteBuild(os, build);
     }
   }
 }

+ 1 - 3
Tests/RunCMake/NinjaMultiConfig/SimpleNoCross-relwithdebinfo-in-release-graph-all-build-stderr.txt

@@ -1,3 +1 @@
-^ninja: error: 'RelWithDebInfo/[^
-]*simplestatic[^
-]*', needed by 'all:RelWithDebInfo', missing and no known rule to make it$
+^ninja: error: unknown target 'all:RelWithDebInfo'$

+ 1 - 3
Tests/RunCMake/NinjaMultiConfig/SimpleNoCross-relwithdebinfo-in-release-graph-target-ninja-stderr.txt

@@ -1,3 +1 @@
-^ninja: error: 'RelWithDebInfo/[^
-]*simplestatic[^
-]*', needed by 'simplestatic:RelWithDebInfo', missing and no known rule to make it$
+^ninja: error: unknown target 'simplestatic:RelWithDebInfo'$