Преглед изворни кода

Ninja: add support for OBJECT_OUTPUTS, fix PrecompiledHeader test case

Peter Collingbourne пре 14 година
родитељ
комит
df847671b4
2 измењених фајлова са 13 додато и 1 уклоњено
  1. 11 0
      Source/cmNinjaTargetGenerator.cxx
  2. 2 1
      Tests/PrecompiledHeader/CMakeLists.txt

+ 11 - 0
Source/cmNinjaTargetGenerator.cxx

@@ -475,6 +475,17 @@ cmNinjaTargetGenerator
                                      emptyDeps,
                                      orderOnlyDeps,
                                      vars);
+
+  if(const char* objectOutputs = source->GetProperty("OBJECT_OUTPUTS")) {
+    std::vector<std::string> outputList;
+    cmSystemTools::ExpandListArgument(objectOutputs, outputList);
+    std::transform(outputList.begin(), outputList.end(), outputList.begin(),
+                   MapToNinjaPath());
+    cmGlobalNinjaGenerator::WritePhonyBuild(this->GetBuildFileStream(),
+                                            "Additional output files.",
+                                            outputList,
+                                            outputs);
+  }
 }
 
 //----------------------------------------------------------------------------

+ 2 - 1
Tests/PrecompiledHeader/CMakeLists.txt

@@ -47,7 +47,8 @@ SET_SOURCE_FILES_PROPERTIES(foo_precompile.c PROPERTIES
 
 # Setup dependencies for precompiled header creation and use.  The VS
 # IDE takes care of this automatically.
-IF("${CMAKE_GENERATOR}" MATCHES "Makefile")
+IF("${CMAKE_GENERATOR}" MATCHES "Makefile" OR
+   "${CMAKE_GENERATOR}" MATCHES "Ninja")
   # This source file creates the precompiled header as a side-effect.
   SET_SOURCE_FILES_PROPERTIES(foo_precompile.c PROPERTIES
     OBJECT_OUTPUTS "${PCH_DIR}/foo_precompiled.pch")