Bläddra i källkod

Ninja Multi-Config: Don't try to calculate dependencies for "all"

Kyle Edwards 5 år sedan
förälder
incheckning
d13bd6ec3d

+ 3 - 1
Source/cmGlobalNinjaGenerator.cxx

@@ -1202,7 +1202,9 @@ void cmGlobalNinjaGenerator::AddTargetAlias(const std::string& alias,
   std::string outputPath = this->NinjaOutputPath(alias);
   std::string buildAlias = this->BuildAlias(outputPath, config);
   cmNinjaDeps outputs;
-  this->AppendTargetOutputs(target, outputs, config);
+  if (config != "all") {
+    this->AppendTargetOutputs(target, outputs, config);
+  }
   // Mark the target's outputs as ambiguous to ensure that no other target
   // uses the output as an alias.
   for (std::string const& output : outputs) {

+ 8 - 0
Tests/RunCMake/NinjaMultiConfig/PerConfigSources.cmake

@@ -0,0 +1,8 @@
+enable_language(C)
+file(GENERATE OUTPUT "${CMAKE_BINARY_DIR}/main_$<CONFIG>.c" CONTENT
+[[int main(void)
+{
+  return 0;
+}
+]])
+add_executable(exe "${CMAKE_BINARY_DIR}/main_$<CONFIG>.c")

+ 4 - 0
Tests/RunCMake/NinjaMultiConfig/RunCMakeTest.cmake

@@ -246,6 +246,10 @@ unset(RunCMake_TEST_BINARY_DIR)
 
 run_cmake(CustomCommandDepfile)
 
+set(RunCMake_TEST_OPTIONS "-DCMAKE_CROSS_CONFIGS=all")
+run_cmake(PerConfigSources)
+unset(RunCMake_TEST_OPTIONS)
+
 set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/PostfixAndLocation-build)
 set(RunCMake_TEST_OPTIONS "-DCMAKE_CONFIGURATION_TYPES=Debug\\;Release;-DCMAKE_CROSS_CONFIGS=all")
 run_cmake_configure(PostfixAndLocation)