Quellcode durchsuchen

cmLocalGenerator: Require a parent in the constructor.

Pass the parent though cmGlobalGenerator::CreateLocalGenerator.

This will make it easy to initialize state scopes independent of
cmMakefile.
Stephen Kelly vor 10 Jahren
Ursprung
Commit
a48aebcb67
59 geänderte Dateien mit 132 neuen und 86 gelöschten Zeilen
  1. 4 2
      Source/cmGlobalBorlandMakefileGenerator.cxx
  2. 1 1
      Source/cmGlobalBorlandMakefileGenerator.h
  3. 3 2
      Source/cmGlobalGenerator.cxx
  4. 1 1
      Source/cmGlobalGenerator.h
  5. 3 2
      Source/cmGlobalGhsMultiGenerator.cxx
  6. 1 1
      Source/cmGlobalGhsMultiGenerator.h
  7. 4 2
      Source/cmGlobalJOMMakefileGenerator.cxx
  8. 1 1
      Source/cmGlobalJOMMakefileGenerator.h
  9. 4 2
      Source/cmGlobalMSYSMakefileGenerator.cxx
  10. 1 1
      Source/cmGlobalMSYSMakefileGenerator.h
  11. 4 2
      Source/cmGlobalMinGWMakefileGenerator.cxx
  12. 1 1
      Source/cmGlobalMinGWMakefileGenerator.h
  13. 4 2
      Source/cmGlobalNMakeMakefileGenerator.cxx
  14. 1 1
      Source/cmGlobalNMakeMakefileGenerator.h
  15. 3 2
      Source/cmGlobalNinjaGenerator.cxx
  16. 1 1
      Source/cmGlobalNinjaGenerator.h
  17. 3 2
      Source/cmGlobalUnixMakefileGenerator3.cxx
  18. 1 1
      Source/cmGlobalUnixMakefileGenerator3.h
  19. 4 2
      Source/cmGlobalVisualStudio10Generator.cxx
  20. 1 1
      Source/cmGlobalVisualStudio10Generator.h
  21. 4 2
      Source/cmGlobalVisualStudio11Generator.cxx
  22. 1 1
      Source/cmGlobalVisualStudio11Generator.h
  23. 4 2
      Source/cmGlobalVisualStudio12Generator.cxx
  24. 1 1
      Source/cmGlobalVisualStudio12Generator.h
  25. 4 2
      Source/cmGlobalVisualStudio14Generator.cxx
  26. 1 1
      Source/cmGlobalVisualStudio14Generator.h
  27. 3 2
      Source/cmGlobalVisualStudio6Generator.cxx
  28. 1 1
      Source/cmGlobalVisualStudio6Generator.h
  29. 4 2
      Source/cmGlobalVisualStudio71Generator.cxx
  30. 1 1
      Source/cmGlobalVisualStudio71Generator.h
  31. 4 2
      Source/cmGlobalVisualStudio7Generator.cxx
  32. 1 1
      Source/cmGlobalVisualStudio7Generator.h
  33. 4 2
      Source/cmGlobalVisualStudio8Generator.cxx
  34. 1 1
      Source/cmGlobalVisualStudio8Generator.h
  35. 4 2
      Source/cmGlobalVisualStudio9Generator.cxx
  36. 1 1
      Source/cmGlobalVisualStudio9Generator.h
  37. 4 2
      Source/cmGlobalWatcomWMakeGenerator.cxx
  38. 1 1
      Source/cmGlobalWatcomWMakeGenerator.h
  39. 3 2
      Source/cmGlobalXCodeGenerator.cxx
  40. 1 1
      Source/cmGlobalXCodeGenerator.h
  41. 6 2
      Source/cmLocalGenerator.cxx
  42. 1 2
      Source/cmLocalGenerator.h
  43. 2 1
      Source/cmLocalGhsMultiGenerator.cxx
  44. 1 1
      Source/cmLocalGhsMultiGenerator.h
  45. 2 2
      Source/cmLocalNinjaGenerator.cxx
  46. 1 1
      Source/cmLocalNinjaGenerator.h
  47. 3 1
      Source/cmLocalUnixMakefileGenerator3.cxx
  48. 1 1
      Source/cmLocalUnixMakefileGenerator3.h
  49. 3 2
      Source/cmLocalVisualStudio10Generator.cxx
  50. 1 1
      Source/cmLocalVisualStudio10Generator.h
  51. 3 2
      Source/cmLocalVisualStudio6Generator.cxx
  52. 1 1
      Source/cmLocalVisualStudio6Generator.h
  53. 3 2
      Source/cmLocalVisualStudio7Generator.cxx
  54. 1 1
      Source/cmLocalVisualStudio7Generator.h
  55. 3 1
      Source/cmLocalVisualStudioGenerator.cxx
  56. 1 1
      Source/cmLocalVisualStudioGenerator.h
  57. 2 1
      Source/cmLocalXCodeGenerator.cxx
  58. 1 1
      Source/cmLocalXCodeGenerator.h
  59. 2 2
      Source/cmMakefile.cxx

+ 4 - 2
Source/cmGlobalBorlandMakefileGenerator.cxx

@@ -37,9 +37,11 @@ void cmGlobalBorlandMakefileGenerator
 }
 }
 
 
 ///! Create a local generator appropriate to this Global Generator
 ///! Create a local generator appropriate to this Global Generator
-cmLocalGenerator *cmGlobalBorlandMakefileGenerator::CreateLocalGenerator()
+cmLocalGenerator *cmGlobalBorlandMakefileGenerator::CreateLocalGenerator(
+    cmLocalGenerator* parent)
 {
 {
-  cmLocalUnixMakefileGenerator3* lg = new cmLocalUnixMakefileGenerator3;
+  cmLocalUnixMakefileGenerator3* lg =
+      new cmLocalUnixMakefileGenerator3(parent);
   lg->SetIncludeDirective("!include");
   lg->SetIncludeDirective("!include");
   lg->SetWindowsShell(true);
   lg->SetWindowsShell(true);
   lg->SetDefineWindowsNULL(true);
   lg->SetDefineWindowsNULL(true);

+ 1 - 1
Source/cmGlobalBorlandMakefileGenerator.h

@@ -36,7 +36,7 @@ public:
   static void GetDocumentation(cmDocumentationEntry& entry);
   static void GetDocumentation(cmDocumentationEntry& entry);
 
 
   ///! Create a local generator appropriate to this Global Generator
   ///! Create a local generator appropriate to this Global Generator
-  virtual cmLocalGenerator *CreateLocalGenerator();
+  virtual cmLocalGenerator *CreateLocalGenerator(cmLocalGenerator* parent = 0);
 
 
   /**
   /**
    * Try to determine system information such as shared library
    * Try to determine system information such as shared library

+ 3 - 2
Source/cmGlobalGenerator.cxx

@@ -1878,9 +1878,10 @@ void cmGlobalGenerator::EnableInstallTarget()
   this->InstallTargetEnabled = true;
   this->InstallTargetEnabled = true;
 }
 }
 
 
-cmLocalGenerator *cmGlobalGenerator::CreateLocalGenerator()
+cmLocalGenerator *
+cmGlobalGenerator::CreateLocalGenerator(cmLocalGenerator *parent)
 {
 {
-  cmLocalGenerator *lg = new cmLocalGenerator;
+  cmLocalGenerator *lg = new cmLocalGenerator(parent);
   lg->SetGlobalGenerator(this);
   lg->SetGlobalGenerator(this);
   return lg;
   return lg;
 }
 }

+ 1 - 1
Source/cmGlobalGenerator.h

@@ -53,7 +53,7 @@ public:
   virtual ~cmGlobalGenerator();
   virtual ~cmGlobalGenerator();
 
 
   ///! Create a local generator appropriate to this Global Generator
   ///! Create a local generator appropriate to this Global Generator
-  virtual cmLocalGenerator *CreateLocalGenerator();
+  virtual cmLocalGenerator *CreateLocalGenerator(cmLocalGenerator* parent = 0);
 
 
   ///! Get the name for this generator
   ///! Get the name for this generator
   virtual std::string GetName() const { return "Generic"; }
   virtual std::string GetName() const { return "Generic"; }

+ 3 - 2
Source/cmGlobalGhsMultiGenerator.cxx

@@ -32,9 +32,10 @@ cmGlobalGhsMultiGenerator::~cmGlobalGhsMultiGenerator()
   cmDeleteAll(TargetFolderBuildStreams);
   cmDeleteAll(TargetFolderBuildStreams);
 }
 }
 
 
-cmLocalGenerator *cmGlobalGhsMultiGenerator::CreateLocalGenerator()
+cmLocalGenerator *
+cmGlobalGhsMultiGenerator::CreateLocalGenerator(cmLocalGenerator* parent)
 {
 {
-  cmLocalGenerator *lg = new cmLocalGhsMultiGenerator;
+  cmLocalGenerator *lg = new cmLocalGhsMultiGenerator(parent);
   lg->SetGlobalGenerator(this);
   lg->SetGlobalGenerator(this);
   this->SetCurrentLocalGenerator(lg);
   this->SetCurrentLocalGenerator(lg);
   return lg;
   return lg;

+ 1 - 1
Source/cmGlobalGhsMultiGenerator.h

@@ -31,7 +31,7 @@ public:
   { return new cmGlobalGeneratorSimpleFactory<cmGlobalGhsMultiGenerator>(); }
   { return new cmGlobalGeneratorSimpleFactory<cmGlobalGhsMultiGenerator>(); }
 
 
   ///! create the correct local generator
   ///! create the correct local generator
-  virtual cmLocalGenerator *CreateLocalGenerator();
+  virtual cmLocalGenerator *CreateLocalGenerator(cmLocalGenerator* parent = 0);
 
 
   /// @return the name of this generator.
   /// @return the name of this generator.
   static std::string GetActualName() { return "Green Hills MULTI"; }
   static std::string GetActualName() { return "Green Hills MULTI"; }

+ 4 - 2
Source/cmGlobalJOMMakefileGenerator.cxx

@@ -45,9 +45,11 @@ void cmGlobalJOMMakefileGenerator
 }
 }
 
 
 ///! Create a local generator appropriate to this Global Generator
 ///! Create a local generator appropriate to this Global Generator
-cmLocalGenerator *cmGlobalJOMMakefileGenerator::CreateLocalGenerator()
+cmLocalGenerator *
+cmGlobalJOMMakefileGenerator::CreateLocalGenerator(cmLocalGenerator* parent)
 {
 {
-  cmLocalUnixMakefileGenerator3* lg = new cmLocalUnixMakefileGenerator3;
+  cmLocalUnixMakefileGenerator3* lg
+      = new cmLocalUnixMakefileGenerator3(parent);
   lg->SetDefineWindowsNULL(true);
   lg->SetDefineWindowsNULL(true);
   lg->SetWindowsShell(true);
   lg->SetWindowsShell(true);
   lg->SetMakeSilentFlag("/nologo");
   lg->SetMakeSilentFlag("/nologo");

+ 1 - 1
Source/cmGlobalJOMMakefileGenerator.h

@@ -37,7 +37,7 @@ public:
   static void GetDocumentation(cmDocumentationEntry& entry);
   static void GetDocumentation(cmDocumentationEntry& entry);
 
 
   ///! Create a local generator appropriate to this Global Generator
   ///! Create a local generator appropriate to this Global Generator
-  virtual cmLocalGenerator *CreateLocalGenerator();
+  virtual cmLocalGenerator *CreateLocalGenerator(cmLocalGenerator* parent = 0);
 
 
   /**
   /**
    * Try to determine system information such as shared library
    * Try to determine system information such as shared library

+ 4 - 2
Source/cmGlobalMSYSMakefileGenerator.cxx

@@ -93,9 +93,11 @@ void cmGlobalMSYSMakefileGenerator
 }
 }
 
 
 ///! Create a local generator appropriate to this Global Generator
 ///! Create a local generator appropriate to this Global Generator
-cmLocalGenerator *cmGlobalMSYSMakefileGenerator::CreateLocalGenerator()
+cmLocalGenerator *
+cmGlobalMSYSMakefileGenerator::CreateLocalGenerator(cmLocalGenerator* parent)
 {
 {
-  cmLocalUnixMakefileGenerator3* lg = new cmLocalUnixMakefileGenerator3;
+  cmLocalUnixMakefileGenerator3* lg =
+      new cmLocalUnixMakefileGenerator3(parent);
   lg->SetWindowsShell(false);
   lg->SetWindowsShell(false);
   lg->SetMSYSShell(true);
   lg->SetMSYSShell(true);
   lg->SetGlobalGenerator(this);
   lg->SetGlobalGenerator(this);

+ 1 - 1
Source/cmGlobalMSYSMakefileGenerator.h

@@ -36,7 +36,7 @@ public:
   static void GetDocumentation(cmDocumentationEntry& entry);
   static void GetDocumentation(cmDocumentationEntry& entry);
 
 
   ///! Create a local generator appropriate to this Global Generator
   ///! Create a local generator appropriate to this Global Generator
-  virtual cmLocalGenerator *CreateLocalGenerator();
+  virtual cmLocalGenerator *CreateLocalGenerator(cmLocalGenerator* parent = 0);
 
 
   /**
   /**
    * Try to determine system information such as shared library
    * Try to determine system information such as shared library

+ 4 - 2
Source/cmGlobalMinGWMakefileGenerator.cxx

@@ -31,9 +31,11 @@ void cmGlobalMinGWMakefileGenerator
 }
 }
 
 
 ///! Create a local generator appropriate to this Global Generator
 ///! Create a local generator appropriate to this Global Generator
-cmLocalGenerator *cmGlobalMinGWMakefileGenerator::CreateLocalGenerator()
+cmLocalGenerator *
+cmGlobalMinGWMakefileGenerator::CreateLocalGenerator(cmLocalGenerator* parent)
 {
 {
-  cmLocalUnixMakefileGenerator3* lg = new cmLocalUnixMakefileGenerator3;
+  cmLocalUnixMakefileGenerator3* lg =
+      new cmLocalUnixMakefileGenerator3(parent);
   lg->SetWindowsShell(true);
   lg->SetWindowsShell(true);
   lg->SetGlobalGenerator(this);
   lg->SetGlobalGenerator(this);
   lg->SetIgnoreLibPrefix(true);
   lg->SetIgnoreLibPrefix(true);

+ 1 - 1
Source/cmGlobalMinGWMakefileGenerator.h

@@ -35,7 +35,7 @@ public:
   static void GetDocumentation(cmDocumentationEntry& entry);
   static void GetDocumentation(cmDocumentationEntry& entry);
 
 
   ///! Create a local generator appropriate to this Global Generator
   ///! Create a local generator appropriate to this Global Generator
-  virtual cmLocalGenerator *CreateLocalGenerator();
+  virtual cmLocalGenerator *CreateLocalGenerator(cmLocalGenerator* parent = 0);
 
 
   /**
   /**
    * Try to determine system information such as shared library
    * Try to determine system information such as shared library

+ 4 - 2
Source/cmGlobalNMakeMakefileGenerator.cxx

@@ -45,9 +45,11 @@ void cmGlobalNMakeMakefileGenerator
 }
 }
 
 
 ///! Create a local generator appropriate to this Global Generator
 ///! Create a local generator appropriate to this Global Generator
-cmLocalGenerator *cmGlobalNMakeMakefileGenerator::CreateLocalGenerator()
+cmLocalGenerator *
+cmGlobalNMakeMakefileGenerator::CreateLocalGenerator(cmLocalGenerator* parent)
 {
 {
-  cmLocalUnixMakefileGenerator3* lg = new cmLocalUnixMakefileGenerator3;
+  cmLocalUnixMakefileGenerator3* lg =
+      new cmLocalUnixMakefileGenerator3(parent);
   lg->SetDefineWindowsNULL(true);
   lg->SetDefineWindowsNULL(true);
   lg->SetWindowsShell(true);
   lg->SetWindowsShell(true);
   lg->SetMakeSilentFlag("/nologo");
   lg->SetMakeSilentFlag("/nologo");

+ 1 - 1
Source/cmGlobalNMakeMakefileGenerator.h

@@ -35,7 +35,7 @@ public:
   static void GetDocumentation(cmDocumentationEntry& entry);
   static void GetDocumentation(cmDocumentationEntry& entry);
 
 
   ///! Create a local generator appropriate to this Global Generator
   ///! Create a local generator appropriate to this Global Generator
-  virtual cmLocalGenerator *CreateLocalGenerator();
+  virtual cmLocalGenerator *CreateLocalGenerator(cmLocalGenerator* parent = 0);
 
 
   /**
   /**
    * Try to determine system information such as shared library
    * Try to determine system information such as shared library

+ 3 - 2
Source/cmGlobalNinjaGenerator.cxx

@@ -496,9 +496,10 @@ cmGlobalNinjaGenerator::cmGlobalNinjaGenerator()
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 // Virtual public methods.
 // Virtual public methods.
 
 
-cmLocalGenerator* cmGlobalNinjaGenerator::CreateLocalGenerator()
+cmLocalGenerator*
+cmGlobalNinjaGenerator::CreateLocalGenerator(cmLocalGenerator* parent)
 {
 {
-  cmLocalGenerator* lg = new cmLocalNinjaGenerator;
+  cmLocalGenerator* lg = new cmLocalNinjaGenerator(parent);
   lg->SetGlobalGenerator(this);
   lg->SetGlobalGenerator(this);
   return lg;
   return lg;
 }
 }

+ 1 - 1
Source/cmGlobalNinjaGenerator.h

@@ -171,7 +171,7 @@ public:
   virtual ~cmGlobalNinjaGenerator() { }
   virtual ~cmGlobalNinjaGenerator() { }
 
 
   /// Overloaded methods. @see cmGlobalGenerator::CreateLocalGenerator()
   /// Overloaded methods. @see cmGlobalGenerator::CreateLocalGenerator()
-  virtual cmLocalGenerator* CreateLocalGenerator();
+  virtual cmLocalGenerator* CreateLocalGenerator(cmLocalGenerator* parent = 0);
 
 
   /// Overloaded methods. @see cmGlobalGenerator::GetName().
   /// Overloaded methods. @see cmGlobalGenerator::GetName().
   virtual std::string GetName() const {
   virtual std::string GetName() const {

+ 3 - 2
Source/cmGlobalUnixMakefileGenerator3.cxx

@@ -53,9 +53,10 @@ void cmGlobalUnixMakefileGenerator3
 }
 }
 
 
 ///! Create a local generator appropriate to this Global Generator
 ///! Create a local generator appropriate to this Global Generator
-cmLocalGenerator *cmGlobalUnixMakefileGenerator3::CreateLocalGenerator()
+cmLocalGenerator *
+cmGlobalUnixMakefileGenerator3::CreateLocalGenerator(cmLocalGenerator* parent)
 {
 {
-  cmLocalGenerator* lg = new cmLocalUnixMakefileGenerator3;
+  cmLocalGenerator* lg = new cmLocalUnixMakefileGenerator3(parent);
   lg->SetGlobalGenerator(this);
   lg->SetGlobalGenerator(this);
   return lg;
   return lg;
 }
 }

+ 1 - 1
Source/cmGlobalUnixMakefileGenerator3.h

@@ -68,7 +68,7 @@ public:
   static void GetDocumentation(cmDocumentationEntry& entry);
   static void GetDocumentation(cmDocumentationEntry& entry);
 
 
   ///! Create a local generator appropriate to this Global Generator3
   ///! Create a local generator appropriate to this Global Generator3
-  virtual cmLocalGenerator *CreateLocalGenerator();
+  virtual cmLocalGenerator *CreateLocalGenerator(cmLocalGenerator* parent = 0);
 
 
   /**
   /**
    * Try to determine system information such as shared library
    * Try to determine system information such as shared library

+ 4 - 2
Source/cmGlobalVisualStudio10Generator.cxx

@@ -308,10 +308,12 @@ void cmGlobalVisualStudio10Generator::WriteSLNHeader(std::ostream& fout)
 }
 }
 
 
 ///! Create a local generator appropriate to this Global Generator
 ///! Create a local generator appropriate to this Global Generator
-cmLocalGenerator *cmGlobalVisualStudio10Generator::CreateLocalGenerator()
+cmLocalGenerator *
+cmGlobalVisualStudio10Generator::CreateLocalGenerator(cmLocalGenerator* parent)
 {
 {
   cmLocalVisualStudio10Generator* lg =
   cmLocalVisualStudio10Generator* lg =
-    new cmLocalVisualStudio10Generator(cmLocalVisualStudioGenerator::VS10);
+    new cmLocalVisualStudio10Generator(cmLocalVisualStudioGenerator::VS10,
+                                       parent);
   lg->SetGlobalGenerator(this);
   lg->SetGlobalGenerator(this);
   return lg;
   return lg;
 }
 }

+ 1 - 1
Source/cmGlobalVisualStudio10Generator.h

@@ -46,7 +46,7 @@ public:
     );
     );
 
 
   ///! create the correct local generator
   ///! create the correct local generator
-  virtual cmLocalGenerator *CreateLocalGenerator();
+  virtual cmLocalGenerator *CreateLocalGenerator(cmLocalGenerator* parent = 0);
 
 
   /**
   /**
    * Try to determine system information such as shared library
    * Try to determine system information such as shared library

+ 4 - 2
Source/cmGlobalVisualStudio11Generator.cxx

@@ -237,10 +237,12 @@ void cmGlobalVisualStudio11Generator::WriteSLNHeader(std::ostream& fout)
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-cmLocalGenerator *cmGlobalVisualStudio11Generator::CreateLocalGenerator()
+cmLocalGenerator *
+cmGlobalVisualStudio11Generator::CreateLocalGenerator(cmLocalGenerator* parent)
 {
 {
   cmLocalVisualStudio10Generator* lg =
   cmLocalVisualStudio10Generator* lg =
-    new cmLocalVisualStudio10Generator(cmLocalVisualStudioGenerator::VS11);
+    new cmLocalVisualStudio10Generator(cmLocalVisualStudioGenerator::VS11,
+                                       parent);
   lg->SetGlobalGenerator(this);
   lg->SetGlobalGenerator(this);
   return lg;
   return lg;
 }
 }

+ 1 - 1
Source/cmGlobalVisualStudio11Generator.h

@@ -29,7 +29,7 @@ public:
   virtual void WriteSLNHeader(std::ostream& fout);
   virtual void WriteSLNHeader(std::ostream& fout);
 
 
   ///! create the correct local generator
   ///! create the correct local generator
-  virtual cmLocalGenerator *CreateLocalGenerator();
+  virtual cmLocalGenerator *CreateLocalGenerator(cmLocalGenerator* parent = 0);
 
 
 protected:
 protected:
   virtual bool InitializeWindowsPhone(cmMakefile* mf);
   virtual bool InitializeWindowsPhone(cmMakefile* mf);

+ 4 - 2
Source/cmGlobalVisualStudio12Generator.cxx

@@ -217,10 +217,12 @@ void cmGlobalVisualStudio12Generator::WriteSLNHeader(std::ostream& fout)
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-cmLocalGenerator *cmGlobalVisualStudio12Generator::CreateLocalGenerator()
+cmLocalGenerator *
+cmGlobalVisualStudio12Generator::CreateLocalGenerator(cmLocalGenerator* parent)
 {
 {
   cmLocalVisualStudio10Generator* lg =
   cmLocalVisualStudio10Generator* lg =
-    new cmLocalVisualStudio10Generator(cmLocalVisualStudioGenerator::VS12);
+    new cmLocalVisualStudio10Generator(cmLocalVisualStudioGenerator::VS12,
+                                       parent);
   lg->SetGlobalGenerator(this);
   lg->SetGlobalGenerator(this);
   return lg;
   return lg;
 }
 }

+ 1 - 1
Source/cmGlobalVisualStudio12Generator.h

@@ -29,7 +29,7 @@ public:
   virtual void WriteSLNHeader(std::ostream& fout);
   virtual void WriteSLNHeader(std::ostream& fout);
 
 
   ///! create the correct local generator
   ///! create the correct local generator
-  virtual cmLocalGenerator *CreateLocalGenerator();
+  virtual cmLocalGenerator *CreateLocalGenerator(cmLocalGenerator* parent = 0);
 
 
   //in Visual Studio 2013 they detached the MSBuild tools version
   //in Visual Studio 2013 they detached the MSBuild tools version
   //from the .Net Framework version and instead made it have it's own
   //from the .Net Framework version and instead made it have it's own

+ 4 - 2
Source/cmGlobalVisualStudio14Generator.cxx

@@ -128,10 +128,12 @@ void cmGlobalVisualStudio14Generator::WriteSLNHeader(std::ostream& fout)
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-cmLocalGenerator *cmGlobalVisualStudio14Generator::CreateLocalGenerator()
+cmLocalGenerator *
+cmGlobalVisualStudio14Generator::CreateLocalGenerator(cmLocalGenerator* parent)
 {
 {
   cmLocalVisualStudio10Generator* lg =
   cmLocalVisualStudio10Generator* lg =
-    new cmLocalVisualStudio10Generator(cmLocalVisualStudioGenerator::VS14);
+    new cmLocalVisualStudio10Generator(cmLocalVisualStudioGenerator::VS14,
+                                       parent);
   lg->SetGlobalGenerator(this);
   lg->SetGlobalGenerator(this);
   return lg;
   return lg;
 }
 }

+ 1 - 1
Source/cmGlobalVisualStudio14Generator.h

@@ -29,7 +29,7 @@ public:
   virtual void WriteSLNHeader(std::ostream& fout);
   virtual void WriteSLNHeader(std::ostream& fout);
 
 
   ///! create the correct local generator
   ///! create the correct local generator
-  virtual cmLocalGenerator *CreateLocalGenerator();
+  virtual cmLocalGenerator *CreateLocalGenerator(cmLocalGenerator* parent = 0);
 
 
   virtual const char* GetToolsVersion() { return "14.0"; }
   virtual const char* GetToolsVersion() { return "14.0"; }
 protected:
 protected:

+ 3 - 2
Source/cmGlobalVisualStudio6Generator.cxx

@@ -170,9 +170,10 @@ cmGlobalVisualStudio6Generator::GenerateBuildCommand(
 }
 }
 
 
 ///! Create a local generator appropriate to this Global Generator
 ///! Create a local generator appropriate to this Global Generator
-cmLocalGenerator *cmGlobalVisualStudio6Generator::CreateLocalGenerator()
+cmLocalGenerator *
+cmGlobalVisualStudio6Generator::CreateLocalGenerator(cmLocalGenerator* parent)
 {
 {
-  cmLocalGenerator *lg = new cmLocalVisualStudio6Generator;
+  cmLocalGenerator *lg = new cmLocalVisualStudio6Generator(parent);
   lg->SetGlobalGenerator(this);
   lg->SetGlobalGenerator(this);
   return lg;
   return lg;
 }
 }

+ 1 - 1
Source/cmGlobalVisualStudio6Generator.h

@@ -39,7 +39,7 @@ public:
   static void GetDocumentation(cmDocumentationEntry& entry);
   static void GetDocumentation(cmDocumentationEntry& entry);
 
 
   ///! Create a local generator appropriate to this Global Generator
   ///! Create a local generator appropriate to this Global Generator
-  virtual cmLocalGenerator *CreateLocalGenerator();
+  virtual cmLocalGenerator *CreateLocalGenerator(cmLocalGenerator* parent = 0);
 
 
   /**
   /**
    * Try to determine system information such as shared library
    * Try to determine system information such as shared library

+ 4 - 2
Source/cmGlobalVisualStudio71Generator.cxx

@@ -25,10 +25,12 @@ cmGlobalVisualStudio71Generator::cmGlobalVisualStudio71Generator(
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 ///! Create a local generator appropriate to this Global Generator
 ///! Create a local generator appropriate to this Global Generator
-cmLocalGenerator *cmGlobalVisualStudio71Generator::CreateLocalGenerator()
+cmLocalGenerator *
+cmGlobalVisualStudio71Generator::CreateLocalGenerator(cmLocalGenerator* parent)
 {
 {
   cmLocalVisualStudio7Generator *lg =
   cmLocalVisualStudio7Generator *lg =
-    new cmLocalVisualStudio7Generator(cmLocalVisualStudioGenerator::VS71);
+    new cmLocalVisualStudio7Generator(cmLocalVisualStudioGenerator::VS71,
+                                      parent);
   lg->SetExtraFlagTable(this->GetExtraFlagTableVS7());
   lg->SetExtraFlagTable(this->GetExtraFlagTableVS7());
   lg->SetGlobalGenerator(this);
   lg->SetGlobalGenerator(this);
   return lg;
   return lg;

+ 1 - 1
Source/cmGlobalVisualStudio71Generator.h

@@ -37,7 +37,7 @@ public:
   static void GetDocumentation(cmDocumentationEntry& entry);
   static void GetDocumentation(cmDocumentationEntry& entry);
 
 
   ///! Create a local generator appropriate to this Global Generator
   ///! Create a local generator appropriate to this Global Generator
-  virtual cmLocalGenerator *CreateLocalGenerator();
+  virtual cmLocalGenerator *CreateLocalGenerator(cmLocalGenerator* parent = 0);
 
 
   /**
   /**
    * Where does this version of Visual Studio look for macros for the
    * Where does this version of Visual Studio look for macros for the

+ 4 - 2
Source/cmGlobalVisualStudio7Generator.cxx

@@ -250,10 +250,12 @@ void cmGlobalVisualStudio7Generator::GenerateBuildCommand(
 }
 }
 
 
 ///! Create a local generator appropriate to this Global Generator
 ///! Create a local generator appropriate to this Global Generator
-cmLocalGenerator *cmGlobalVisualStudio7Generator::CreateLocalGenerator()
+cmLocalGenerator *
+cmGlobalVisualStudio7Generator::CreateLocalGenerator(cmLocalGenerator* parent)
 {
 {
   cmLocalVisualStudio7Generator *lg =
   cmLocalVisualStudio7Generator *lg =
-    new cmLocalVisualStudio7Generator(cmLocalVisualStudioGenerator::VS7);
+    new cmLocalVisualStudio7Generator(cmLocalVisualStudioGenerator::VS7,
+                                      parent);
   lg->SetExtraFlagTable(this->GetExtraFlagTableVS7());
   lg->SetExtraFlagTable(this->GetExtraFlagTableVS7());
   lg->SetGlobalGenerator(this);
   lg->SetGlobalGenerator(this);
   return lg;
   return lg;

+ 1 - 1
Source/cmGlobalVisualStudio7Generator.h

@@ -42,7 +42,7 @@ public:
   std::string const& GetPlatformName() const;
   std::string const& GetPlatformName() const;
 
 
   ///! Create a local generator appropriate to this Global Generator
   ///! Create a local generator appropriate to this Global Generator
-  virtual cmLocalGenerator *CreateLocalGenerator();
+  virtual cmLocalGenerator *CreateLocalGenerator(cmLocalGenerator* parent = 0);
 
 
   virtual bool SetSystemName(std::string const& s, cmMakefile* mf);
   virtual bool SetSystemName(std::string const& s, cmMakefile* mf);
 
 

+ 4 - 2
Source/cmGlobalVisualStudio8Generator.cxx

@@ -125,10 +125,12 @@ std::string cmGlobalVisualStudio8Generator::FindDevEnvCommand()
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 ///! Create a local generator appropriate to this Global Generator
 ///! Create a local generator appropriate to this Global Generator
-cmLocalGenerator *cmGlobalVisualStudio8Generator::CreateLocalGenerator()
+cmLocalGenerator *
+cmGlobalVisualStudio8Generator::CreateLocalGenerator(cmLocalGenerator* parent)
 {
 {
   cmLocalVisualStudio7Generator *lg =
   cmLocalVisualStudio7Generator *lg =
-    new cmLocalVisualStudio7Generator(cmLocalVisualStudioGenerator::VS8);
+    new cmLocalVisualStudio7Generator(cmLocalVisualStudioGenerator::VS8,
+                                      parent);
   lg->SetExtraFlagTable(this->GetExtraFlagTableVS8());
   lg->SetExtraFlagTable(this->GetExtraFlagTableVS8());
   lg->SetGlobalGenerator(this);
   lg->SetGlobalGenerator(this);
   return lg;
   return lg;

+ 1 - 1
Source/cmGlobalVisualStudio8Generator.h

@@ -34,7 +34,7 @@ public:
   static void GetDocumentation(cmDocumentationEntry& entry);
   static void GetDocumentation(cmDocumentationEntry& entry);
 
 
   ///! Create a local generator appropriate to this Global Generator
   ///! Create a local generator appropriate to this Global Generator
-  virtual cmLocalGenerator *CreateLocalGenerator();
+  virtual cmLocalGenerator *CreateLocalGenerator(cmLocalGenerator* parent = 0);
 
 
   virtual void EnableLanguage(std::vector<std::string>const& languages,
   virtual void EnableLanguage(std::vector<std::string>const& languages,
                               cmMakefile *, bool optional);
                               cmMakefile *, bool optional);

+ 4 - 2
Source/cmGlobalVisualStudio9Generator.cxx

@@ -114,10 +114,12 @@ void cmGlobalVisualStudio9Generator::WriteSLNHeader(std::ostream& fout)
 }
 }
 
 
 ///! Create a local generator appropriate to this Global Generator
 ///! Create a local generator appropriate to this Global Generator
-cmLocalGenerator *cmGlobalVisualStudio9Generator::CreateLocalGenerator()
+cmLocalGenerator *
+cmGlobalVisualStudio9Generator::CreateLocalGenerator(cmLocalGenerator* parent)
 {
 {
   cmLocalVisualStudio7Generator *lg
   cmLocalVisualStudio7Generator *lg
-    = new cmLocalVisualStudio7Generator(cmLocalVisualStudioGenerator::VS9);
+    = new cmLocalVisualStudio7Generator(cmLocalVisualStudioGenerator::VS9,
+                                        parent);
   lg->SetExtraFlagTable(this->GetExtraFlagTableVS8());
   lg->SetExtraFlagTable(this->GetExtraFlagTableVS8());
   lg->SetGlobalGenerator(this);
   lg->SetGlobalGenerator(this);
   return lg;
   return lg;

+ 1 - 1
Source/cmGlobalVisualStudio9Generator.h

@@ -29,7 +29,7 @@ public:
   static cmGlobalGeneratorFactory* NewFactory();
   static cmGlobalGeneratorFactory* NewFactory();
 
 
   ///! create the correct local generator
   ///! create the correct local generator
-  virtual cmLocalGenerator *CreateLocalGenerator();
+  virtual cmLocalGenerator *CreateLocalGenerator(cmLocalGenerator* parent = 0);
 
 
   /**
   /**
    * Try to determine system information such as shared library
    * Try to determine system information such as shared library

+ 4 - 2
Source/cmGlobalWatcomWMakeGenerator.cxx

@@ -41,9 +41,11 @@ void cmGlobalWatcomWMakeGenerator
 }
 }
 
 
 ///! Create a local generator appropriate to this Global Generator
 ///! Create a local generator appropriate to this Global Generator
-cmLocalGenerator *cmGlobalWatcomWMakeGenerator::CreateLocalGenerator()
+cmLocalGenerator *
+cmGlobalWatcomWMakeGenerator::CreateLocalGenerator(cmLocalGenerator* parent)
 {
 {
-  cmLocalUnixMakefileGenerator3* lg = new cmLocalUnixMakefileGenerator3;
+  cmLocalUnixMakefileGenerator3* lg
+      = new cmLocalUnixMakefileGenerator3(parent);
   lg->SetDefineWindowsNULL(true);
   lg->SetDefineWindowsNULL(true);
 #ifdef _WIN32
 #ifdef _WIN32
   lg->SetWindowsShell(true);
   lg->SetWindowsShell(true);

+ 1 - 1
Source/cmGlobalWatcomWMakeGenerator.h

@@ -35,7 +35,7 @@ public:
   static void GetDocumentation(cmDocumentationEntry& entry);
   static void GetDocumentation(cmDocumentationEntry& entry);
 
 
   ///! Create a local generator appropriate to this Global Generator
   ///! Create a local generator appropriate to this Global Generator
-  virtual cmLocalGenerator *CreateLocalGenerator();
+  virtual cmLocalGenerator *CreateLocalGenerator(cmLocalGenerator* parent = 0);
 
 
   /**
   /**
    * Try to determine system information such as shared library
    * Try to determine system information such as shared library

+ 3 - 2
Source/cmGlobalXCodeGenerator.cxx

@@ -368,9 +368,10 @@ cmGlobalXCodeGenerator::GenerateBuildCommand(
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 ///! Create a local generator appropriate to this Global Generator
 ///! Create a local generator appropriate to this Global Generator
-cmLocalGenerator *cmGlobalXCodeGenerator::CreateLocalGenerator()
+cmLocalGenerator *
+cmGlobalXCodeGenerator::CreateLocalGenerator(cmLocalGenerator* parent)
 {
 {
-  cmLocalGenerator *lg = new cmLocalXCodeGenerator;
+  cmLocalGenerator *lg = new cmLocalXCodeGenerator(parent);
   lg->SetGlobalGenerator(this);
   lg->SetGlobalGenerator(this);
   return lg;
   return lg;
 }
 }

+ 1 - 1
Source/cmGlobalXCodeGenerator.h

@@ -41,7 +41,7 @@ public:
   static void GetDocumentation(cmDocumentationEntry& entry);
   static void GetDocumentation(cmDocumentationEntry& entry);
 
 
   ///! Create a local generator appropriate to this Global Generator
   ///! Create a local generator appropriate to this Global Generator
-  virtual cmLocalGenerator *CreateLocalGenerator();
+  virtual cmLocalGenerator *CreateLocalGenerator(cmLocalGenerator* parent = 0);
 
 
   /**
   /**
    * Try to determine system information such as shared library
    * Try to determine system information such as shared library

+ 6 - 2
Source/cmLocalGenerator.cxx

@@ -43,10 +43,14 @@
 #include <StorageDefs.h>
 #include <StorageDefs.h>
 #endif
 #endif
 
 
-cmLocalGenerator::cmLocalGenerator()
+cmLocalGenerator::cmLocalGenerator(cmLocalGenerator* parent)
 {
 {
   this->Makefile = 0; // moved to after set on global
   this->Makefile = 0; // moved to after set on global
-  this->Parent = 0;
+  this->Parent = parent;
+  if (parent)
+    {
+    parent->AddChild(this);
+    }
   this->WindowsShell = false;
   this->WindowsShell = false;
   this->WindowsVSIDE = false;
   this->WindowsVSIDE = false;
   this->WatcomWMake = false;
   this->WatcomWMake = false;

+ 1 - 2
Source/cmLocalGenerator.h

@@ -33,7 +33,7 @@ class cmCustomCommandGenerator;
 class cmLocalGenerator
 class cmLocalGenerator
 {
 {
 public:
 public:
-  cmLocalGenerator();
+  cmLocalGenerator(cmLocalGenerator* parent);
   virtual ~cmLocalGenerator();
   virtual ~cmLocalGenerator();
 
 
   /**
   /**
@@ -131,7 +131,6 @@ public:
 
 
   ///! set/get the parent generator
   ///! set/get the parent generator
   cmLocalGenerator* GetParent() const {return this->Parent;}
   cmLocalGenerator* GetParent() const {return this->Parent;}
-  void SetParent(cmLocalGenerator* g) { this->Parent = g; g->AddChild(this); }
 
 
   ///! set/get the children
   ///! set/get the children
   void AddChild(cmLocalGenerator* g) { this->Children.push_back(g); }
   void AddChild(cmLocalGenerator* g) { this->Children.push_back(g); }

+ 2 - 1
Source/cmLocalGhsMultiGenerator.cxx

@@ -16,7 +16,8 @@
 #include "cmGhsMultiTargetGenerator.h"
 #include "cmGhsMultiTargetGenerator.h"
 #include "cmGeneratedFileStream.h"
 #include "cmGeneratedFileStream.h"
 
 
-cmLocalGhsMultiGenerator::cmLocalGhsMultiGenerator()
+cmLocalGhsMultiGenerator::cmLocalGhsMultiGenerator(cmLocalGenerator* parent)
+  : cmLocalGenerator(parent)
 {
 {
 }
 }
 
 

+ 1 - 1
Source/cmLocalGhsMultiGenerator.h

@@ -25,7 +25,7 @@ class cmGeneratedFileStream;
 class cmLocalGhsMultiGenerator : public cmLocalGenerator
 class cmLocalGhsMultiGenerator : public cmLocalGenerator
 {
 {
 public:
 public:
-  cmLocalGhsMultiGenerator();
+  cmLocalGhsMultiGenerator(cmLocalGenerator* parent);
 
 
   virtual ~cmLocalGhsMultiGenerator();
   virtual ~cmLocalGhsMultiGenerator();
 
 

+ 2 - 2
Source/cmLocalNinjaGenerator.cxx

@@ -22,8 +22,8 @@
 
 
 #include <assert.h>
 #include <assert.h>
 
 
-cmLocalNinjaGenerator::cmLocalNinjaGenerator()
-  : cmLocalGenerator()
+cmLocalNinjaGenerator::cmLocalNinjaGenerator(cmLocalGenerator* parent)
+  : cmLocalGenerator(parent)
   , ConfigName("")
   , ConfigName("")
   , HomeRelativeOutputPath("")
   , HomeRelativeOutputPath("")
 {
 {

+ 1 - 1
Source/cmLocalNinjaGenerator.h

@@ -32,7 +32,7 @@ class cmLocalNinjaGenerator : public cmLocalGenerator
 {
 {
 public:
 public:
   /// Default constructor.
   /// Default constructor.
-  cmLocalNinjaGenerator();
+  cmLocalNinjaGenerator(cmLocalGenerator* parent);
 
 
   /// Destructor.
   /// Destructor.
   virtual ~cmLocalNinjaGenerator();
   virtual ~cmLocalNinjaGenerator();

+ 3 - 1
Source/cmLocalUnixMakefileGenerator3.cxx

@@ -79,7 +79,9 @@ static std::string cmSplitExtension(std::string const& in, std::string& base)
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-cmLocalUnixMakefileGenerator3::cmLocalUnixMakefileGenerator3()
+cmLocalUnixMakefileGenerator3::
+cmLocalUnixMakefileGenerator3(cmLocalGenerator* parent)
+  : cmLocalGenerator(parent)
 {
 {
   this->WindowsShell = false;
   this->WindowsShell = false;
   this->IncludeDirective = "include";
   this->IncludeDirective = "include";

+ 1 - 1
Source/cmLocalUnixMakefileGenerator3.h

@@ -34,7 +34,7 @@ class cmSourceFile;
 class cmLocalUnixMakefileGenerator3 : public cmLocalGenerator
 class cmLocalUnixMakefileGenerator3 : public cmLocalGenerator
 {
 {
 public:
 public:
-  cmLocalUnixMakefileGenerator3();
+  cmLocalUnixMakefileGenerator3(cmLocalGenerator* parent);
   virtual ~cmLocalUnixMakefileGenerator3();
   virtual ~cmLocalUnixMakefileGenerator3();
 
 
   /**
   /**

+ 3 - 2
Source/cmLocalVisualStudio10Generator.cxx

@@ -61,8 +61,9 @@ class cmVS10XMLParser : public cmXMLParser
 
 
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-cmLocalVisualStudio10Generator::cmLocalVisualStudio10Generator(VSVersion v):
-  cmLocalVisualStudio7Generator(v)
+cmLocalVisualStudio10Generator
+::cmLocalVisualStudio10Generator(VSVersion v, cmLocalGenerator* parent):
+  cmLocalVisualStudio7Generator(v, parent)
 {
 {
 }
 }
 
 

+ 1 - 1
Source/cmLocalVisualStudio10Generator.h

@@ -25,7 +25,7 @@ class cmLocalVisualStudio10Generator : public cmLocalVisualStudio7Generator
 {
 {
 public:
 public:
   ///! Set cache only and recurse to false by default.
   ///! Set cache only and recurse to false by default.
-  cmLocalVisualStudio10Generator(VSVersion v);
+  cmLocalVisualStudio10Generator(VSVersion v, cmLocalGenerator* parent);
 
 
   virtual ~cmLocalVisualStudio10Generator();
   virtual ~cmLocalVisualStudio10Generator();
 
 

+ 3 - 2
Source/cmLocalVisualStudio6Generator.cxx

@@ -23,8 +23,9 @@
 #include <cmsys/RegularExpression.hxx>
 #include <cmsys/RegularExpression.hxx>
 #include <cmsys/FStream.hxx>
 #include <cmsys/FStream.hxx>
 
 
-cmLocalVisualStudio6Generator::cmLocalVisualStudio6Generator():
-  cmLocalVisualStudioGenerator(VS6)
+cmLocalVisualStudio6Generator
+::cmLocalVisualStudio6Generator(cmLocalGenerator* parent):
+  cmLocalVisualStudioGenerator(VS6, parent)
 {
 {
 }
 }
 
 

+ 1 - 1
Source/cmLocalVisualStudio6Generator.h

@@ -29,7 +29,7 @@ class cmLocalVisualStudio6Generator : public cmLocalVisualStudioGenerator
 {
 {
 public:
 public:
   ///! Set cache only and recurse to false by default.
   ///! Set cache only and recurse to false by default.
-  cmLocalVisualStudio6Generator();
+  cmLocalVisualStudio6Generator(cmLocalGenerator* parent);
 
 
   virtual ~cmLocalVisualStudio6Generator();
   virtual ~cmLocalVisualStudio6Generator();
 
 

+ 3 - 2
Source/cmLocalVisualStudio7Generator.cxx

@@ -54,8 +54,9 @@ static void cmConvertToWindowsSlash(std::string& s)
 }
 }
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-cmLocalVisualStudio7Generator::cmLocalVisualStudio7Generator(VSVersion v):
-  cmLocalVisualStudioGenerator(v)
+cmLocalVisualStudio7Generator
+::cmLocalVisualStudio7Generator(VSVersion v, cmLocalGenerator* parent):
+  cmLocalVisualStudioGenerator(v, parent)
 {
 {
   this->ExtraFlagTable = 0;
   this->ExtraFlagTable = 0;
   this->Internal = new cmLocalVisualStudio7GeneratorInternals(this);
   this->Internal = new cmLocalVisualStudio7GeneratorInternals(this);

+ 1 - 1
Source/cmLocalVisualStudio7Generator.h

@@ -35,7 +35,7 @@ class cmLocalVisualStudio7Generator : public cmLocalVisualStudioGenerator
 {
 {
 public:
 public:
   ///! Set cache only and recurse to false by default.
   ///! Set cache only and recurse to false by default.
-  cmLocalVisualStudio7Generator(VSVersion v);
+  cmLocalVisualStudio7Generator(VSVersion v, cmLocalGenerator* parent);
 
 
   virtual ~cmLocalVisualStudio7Generator();
   virtual ~cmLocalVisualStudio7Generator();
 
 

+ 3 - 1
Source/cmLocalVisualStudioGenerator.cxx

@@ -18,7 +18,9 @@
 #include "windows.h"
 #include "windows.h"
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-cmLocalVisualStudioGenerator::cmLocalVisualStudioGenerator(VSVersion v)
+cmLocalVisualStudioGenerator
+::cmLocalVisualStudioGenerator(VSVersion v, cmLocalGenerator* parent)
+  : cmLocalGenerator(parent)
 {
 {
   this->WindowsShell = true;
   this->WindowsShell = true;
   this->WindowsVSIDE = true;
   this->WindowsVSIDE = true;

+ 1 - 1
Source/cmLocalVisualStudioGenerator.h

@@ -45,7 +45,7 @@ public:
     VS14 = 140
     VS14 = 140
   };
   };
 
 
-  cmLocalVisualStudioGenerator(VSVersion v);
+  cmLocalVisualStudioGenerator(VSVersion v, cmLocalGenerator* parent);
   virtual ~cmLocalVisualStudioGenerator();
   virtual ~cmLocalVisualStudioGenerator();
 
 
   /** Construct a script from the given list of command lines.  */
   /** Construct a script from the given list of command lines.  */

+ 2 - 1
Source/cmLocalXCodeGenerator.cxx

@@ -15,7 +15,8 @@
 #include "cmMakefile.h"
 #include "cmMakefile.h"
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-cmLocalXCodeGenerator::cmLocalXCodeGenerator()
+cmLocalXCodeGenerator::cmLocalXCodeGenerator(cmLocalGenerator* parent)
+  : cmLocalGenerator(parent)
 {
 {
   // the global generator does this, so do not
   // the global generator does this, so do not
   // put these flags into the language flags
   // put these flags into the language flags

+ 1 - 1
Source/cmLocalXCodeGenerator.h

@@ -24,7 +24,7 @@ class cmLocalXCodeGenerator : public cmLocalGenerator
 {
 {
 public:
 public:
   ///! Set cache only and recurse to false by default.
   ///! Set cache only and recurse to false by default.
-  cmLocalXCodeGenerator();
+  cmLocalXCodeGenerator(cmLocalGenerator* parent);
 
 
   virtual ~cmLocalXCodeGenerator();
   virtual ~cmLocalXCodeGenerator();
   virtual std::string GetTargetDirectory(cmTarget const& target) const;
   virtual std::string GetTargetDirectory(cmTarget const& target) const;

+ 2 - 2
Source/cmMakefile.cxx

@@ -1617,8 +1617,8 @@ void cmMakefile::AddSubDirectory(const std::string& srcPath,
 
 
   // create a new local generator and set its parent
   // create a new local generator and set its parent
   cmLocalGenerator *lg2 =
   cmLocalGenerator *lg2 =
-    this->LocalGenerator->GetGlobalGenerator()->CreateLocalGenerator();
-  lg2->SetParent(this->LocalGenerator);
+    this->LocalGenerator->GetGlobalGenerator()
+        ->CreateLocalGenerator(this->LocalGenerator);
   this->LocalGenerator->GetGlobalGenerator()->AddLocalGenerator(lg2);
   this->LocalGenerator->GetGlobalGenerator()->AddLocalGenerator(lg2);
 
 
   // set the subdirs start dirs
   // set the subdirs start dirs