Bläddra i källkod

ENH: Moved GetTargetDirectory method up to cmLocalGenerator. This provides a common interface to something that was implemented in most local generators anyway.

Brad King 18 år sedan
förälder
incheckning
ea874415d9

+ 12 - 0
Source/cmLocalGenerator.cxx

@@ -2772,6 +2772,18 @@ std::string cmLocalGenerator::EscapeForShell(const char* str, bool makeVars,
     }
   return std::string(&arg[0]);
 }
+
+//----------------------------------------------------------------------------
+std::string
+cmLocalGenerator::GetTargetDirectory(cmTarget const&) const
+{
+  cmSystemTools::Error("GetTargetDirectory"
+                       " called on cmLocalGenerator");
+  return "";
+}
+
+
+//----------------------------------------------------------------------------
 void 
 cmLocalGenerator::GetTargetObjectFileDirectories(cmTarget* ,
                                                  std::vector<std::string>& 

+ 6 - 0
Source/cmLocalGenerator.h

@@ -236,6 +236,12 @@ public:
   std::string ConvertToRelativePath(const std::vector<std::string>& local,
                                     const char* remote);
 
+  /**
+   * Get the relative path from the generator output directory to a
+   * per-target support directory.
+   */
+  virtual std::string GetTargetDirectory(cmTarget const& target) const;
+
 protected:
 
   /** Construct a comment for a custom command.  */

+ 2 - 1
Source/cmLocalUnixMakefileGenerator3.cxx

@@ -1897,7 +1897,8 @@ cmLocalUnixMakefileGenerator3::ConvertToQuotedOutputPath(const char* p)
 
 //----------------------------------------------------------------------------
 std::string
-cmLocalUnixMakefileGenerator3::GetTargetDirectory(cmTarget& target)
+cmLocalUnixMakefileGenerator3
+::GetTargetDirectory(cmTarget const& target) const
 {
   std::string dir = cmake::GetCMakeFilesDirectoryPostSlash();
   dir += target.GetName();

+ 1 - 1
Source/cmLocalUnixMakefileGenerator3.h

@@ -188,7 +188,7 @@ public:
   void AppendEcho(std::vector<std::string>& commands, const char* text,
                   EchoColor color = EchoNormal);
 
-  static std::string GetTargetDirectory(cmTarget& target);
+  virtual std::string GetTargetDirectory(cmTarget const& target) const;
 
     // create a command that cds to the start dir then runs the commands
   void CreateCDCommand(std::vector<std::string>& commands, 

+ 7 - 0
Source/cmLocalVisualStudio6Generator.cxx

@@ -1567,6 +1567,13 @@ void cmLocalVisualStudio6Generator
     }
 }
 
+std::string
+cmLocalVisualStudio6Generator
+::GetTargetDirectory(cmTarget const&) const
+{
+  // No per-target directory for this generator (yet).
+  return "";
+}
 
 void cmLocalVisualStudio6Generator
 ::GetTargetObjectFileDirectories(cmTarget* ,

+ 1 - 0
Source/cmLocalVisualStudio6Generator.h

@@ -62,6 +62,7 @@ public:
     {
     return this->CreatedProjectNames;
     }
+  virtual std::string GetTargetDirectory(cmTarget const& target) const;
   void GetTargetObjectFileDirectories(cmTarget* target,
                                       std::vector<std::string>& 
                                       dirs);

+ 1 - 1
Source/cmLocalVisualStudio7Generator.cxx

@@ -1619,7 +1619,7 @@ void cmLocalVisualStudio7Generator::ConfigureFinalPass()
 
 //----------------------------------------------------------------------------
 std::string cmLocalVisualStudio7Generator
-::GetTargetDirectory(cmTarget& target)
+::GetTargetDirectory(cmTarget const& target) const
 {
   std::string dir;
   dir += target.GetName();

+ 1 - 1
Source/cmLocalVisualStudio7Generator.h

@@ -113,7 +113,7 @@ private:
   void WriteGroup(const cmSourceGroup *sg, 
                   cmTarget target, std::ostream &fout, 
                   const char *libName, std::vector<std::string> *configs);
-  virtual std::string GetTargetDirectory(cmTarget&);
+  virtual std::string GetTargetDirectory(cmTarget const&) const;
 
   cmVS7FlagTable const* ExtraFlagTable;
   std::string ModuleDefinitionFile;

+ 7 - 0
Source/cmLocalXCodeGenerator.cxx

@@ -13,6 +13,13 @@ cmLocalXCodeGenerator::~cmLocalXCodeGenerator()
 {
 }
 
+std::string
+cmLocalXCodeGenerator::GetTargetDirectory(cmTarget const&) const
+{
+  // No per-target directory for this generator (yet).
+  return "";
+}
+
 void cmLocalXCodeGenerator::
 GetTargetObjectFileDirectories(cmTarget* target,
                                std::vector<std::string>& 

+ 1 - 0
Source/cmLocalXCodeGenerator.h

@@ -35,6 +35,7 @@ public:
   void GetTargetObjectFileDirectories(cmTarget* target,
                                       std::vector<std::string>& 
                                       dirs);
+  virtual std::string GetTargetDirectory(cmTarget const& target) const;
 private:
 
 };