Просмотр исходного кода

cmGeneratorTarget: Add method to get the object file directory

Add a `GetObjectDirectory` method to get the target's object file
directory for a specific configuration.
Brad King 8 лет назад
Родитель
Сommit
d596c5504e
2 измененных файлов с 17 добавлено и 0 удалено
  1. 13 0
      Source/cmGeneratorTarget.cxx
  2. 4 0
      Source/cmGeneratorTarget.h

+ 13 - 0
Source/cmGeneratorTarget.cxx

@@ -3254,6 +3254,19 @@ std::string cmGeneratorTarget::GetPDBName(const std::string& config) const
   return prefix + base + ".pdb";
   return prefix + base + ".pdb";
 }
 }
 
 
+std::string cmGeneratorTarget::GetObjectDirectory(
+  std::string const& config) const
+{
+  std::string obj_dir =
+    this->GlobalGenerator->ExpandCFGIntDir(this->ObjectDirectory, config);
+#if defined(__APPLE__)
+  // find and replace $(PROJECT_NAME) xcode placeholder
+  const std::string projectName = this->LocalGenerator->GetProjectName();
+  cmSystemTools::ReplaceString(obj_dir, "$(PROJECT_NAME)", projectName);
+#endif
+  return obj_dir;
+}
+
 void cmGeneratorTarget::GetTargetObjectNames(
 void cmGeneratorTarget::GetTargetObjectNames(
   std::string const& config, std::vector<std::string>& objects) const
   std::string const& config, std::vector<std::string>& objects) const
 {
 {

+ 4 - 0
Source/cmGeneratorTarget.h

@@ -369,6 +369,10 @@ public:
       time config name placeholder if needed for the generator.  */
       time config name placeholder if needed for the generator.  */
   std::string ObjectDirectory;
   std::string ObjectDirectory;
 
 
+  /** Full path with trailing slash to the top-level directory
+      holding object files for the given configuration.  */
+  std::string GetObjectDirectory(std::string const& config) const;
+
   void GetAppleArchs(const std::string& config,
   void GetAppleArchs(const std::string& config,
                      std::vector<std::string>& archVec) const;
                      std::vector<std::string>& archVec) const;