Переглянути джерело

Merge topic 'xcode-remove-UseObjectLibraries'

229abfc8 cmGeneratorTarget: Drop unused UseObjectLibraries method
63fbf587 Xcode: Inline relevant parts of UseObjectLibraries
1afacebe Xcode: Do not add Object Libraries source group on Xcode >= 5

Acked-by: Kitware Robot <[email protected]>
Merge-request: !698
Brad King 8 роки тому
батько
коміт
e155fba644

+ 0 - 35
Source/cmGeneratorTarget.cxx

@@ -1937,41 +1937,6 @@ bool cmGeneratorTarget::IsDLLPlatform() const
   return this->DLLPlatform;
 }
 
-void cmGeneratorTarget::UseObjectLibraries(std::vector<std::string>& objs,
-                                           const std::string& config) const
-{
-  std::vector<cmSourceFile const*> objectFiles;
-  this->GetExternalObjects(objectFiles, config);
-  std::vector<cmGeneratorTarget*> objectLibraries;
-  for (std::vector<cmSourceFile const*>::const_iterator it =
-         objectFiles.begin();
-       it != objectFiles.end(); ++it) {
-    std::string objLib = (*it)->GetObjectLibrary();
-    if (cmGeneratorTarget* tgt =
-          this->LocalGenerator->FindGeneratorTargetToUse(objLib)) {
-      objectLibraries.push_back(tgt);
-    }
-  }
-
-  std::vector<cmGeneratorTarget*>::const_iterator end =
-    cmRemoveDuplicates(objectLibraries);
-
-  for (std::vector<cmGeneratorTarget*>::const_iterator ti =
-         objectLibraries.begin();
-       ti != end; ++ti) {
-    cmGeneratorTarget* ogt = *ti;
-    std::vector<cmSourceFile const*> objectSources;
-    ogt->GetObjectSources(objectSources, config);
-    for (std::vector<cmSourceFile const*>::const_iterator si =
-           objectSources.begin();
-         si != objectSources.end(); ++si) {
-      std::string obj = ogt->ObjectDirectory;
-      obj += ogt->Objects[*si];
-      objs.push_back(obj);
-    }
-  }
-}
-
 void cmGeneratorTarget::GetAutoUicOptions(std::vector<std::string>& result,
                                           const std::string& config) const
 {

+ 0 - 3
Source/cmGeneratorTarget.h

@@ -347,9 +347,6 @@ public:
       time config name placeholder if needed for the generator.  */
   std::string ObjectDirectory;
 
-  void UseObjectLibraries(std::vector<std::string>& objs,
-                          const std::string& config) const;
-
   void GetAppleArchs(const std::string& config,
                      std::vector<std::string>& archVec) const;
 

+ 32 - 19
Source/cmGlobalXCodeGenerator.cxx

@@ -1051,11 +1051,14 @@ bool cmGlobalXCodeGenerator::CreateXCodeTargets(
       // Add object library contents as external objects. (Equivalent to
       // the externalObjFiles above, except each one is not a cmSourceFile
       // within the target.)
-      std::vector<std::string> objs;
-      gtgt->UseObjectLibraries(objs, "");
-      for (std::vector<std::string>::const_iterator oi = objs.begin();
+      std::vector<cmSourceFile const*> objs;
+      gtgt->GetExternalObjects(objs, "");
+      for (std::vector<cmSourceFile const*>::const_iterator oi = objs.begin();
            oi != objs.end(); ++oi) {
-        std::string obj = *oi;
+        if ((*oi)->GetObjectLibrary().empty()) {
+          continue;
+        }
+        std::string const& obj = (*oi)->GetFullPath();
         cmXCodeObject* xsf =
           this->CreateXCodeSourceFileFromPath(obj, gtgt, "", 0);
         externalObjFiles.push_back(xsf);
@@ -2669,13 +2672,16 @@ void cmGlobalXCodeGenerator::AddDependAndLinkInformation(cmXCodeObject* target)
       // Add object library contents as link flags.
       std::string linkObjs;
       const char* sep = "";
-      std::vector<std::string> objs;
-      gt->UseObjectLibraries(objs, "");
-      for (std::vector<std::string>::const_iterator oi = objs.begin();
+      std::vector<cmSourceFile const*> objs;
+      gt->GetExternalObjects(objs, "");
+      for (std::vector<cmSourceFile const*>::const_iterator oi = objs.begin();
            oi != objs.end(); ++oi) {
+        if ((*oi)->GetObjectLibrary().empty()) {
+          continue;
+        }
         linkObjs += sep;
         sep = " ";
-        linkObjs += this->XCodeEscapePath(*oi);
+        linkObjs += this->XCodeEscapePath((*oi)->GetFullPath());
       }
       this->AppendBuildSettingAttribute(
         target, this->GetTargetLinkFlagsVar(gt), linkObjs.c_str(), configName);
@@ -2799,17 +2805,24 @@ bool cmGlobalXCodeGenerator::CreateGroups(
         this->GroupMap[key] = pbxgroup;
       }
 
-      // Put OBJECT_LIBRARY objects in proper groups:
-      std::vector<std::string> objs;
-      gtgt->UseObjectLibraries(objs, "");
-      for (std::vector<std::string>::const_iterator oi = objs.begin();
-           oi != objs.end(); ++oi) {
-        std::string const& source = *oi;
-        cmSourceGroup* sourceGroup =
-          mf->FindSourceGroup(source.c_str(), sourceGroups);
-        cmXCodeObject* pbxgroup = this->CreateOrGetPBXGroup(gtgt, sourceGroup);
-        std::string key = GetGroupMapKeyFromPath(gtgt, source);
-        this->GroupMap[key] = pbxgroup;
+      if (this->XcodeVersion < 50) {
+        // Put OBJECT_LIBRARY objects in proper groups:
+        std::vector<cmSourceFile const*> objs;
+        gtgt->GetExternalObjects(objs, "");
+        for (std::vector<cmSourceFile const*>::const_iterator oi =
+               objs.begin();
+             oi != objs.end(); ++oi) {
+          if ((*oi)->GetObjectLibrary().empty()) {
+            continue;
+          }
+          std::string const& source = (*oi)->GetFullPath();
+          cmSourceGroup* sourceGroup =
+            mf->FindSourceGroup(source.c_str(), sourceGroups);
+          cmXCodeObject* pbxgroup =
+            this->CreateOrGetPBXGroup(gtgt, sourceGroup);
+          std::string key = GetGroupMapKeyFromPath(gtgt, source);
+          this->GroupMap[key] = pbxgroup;
+        }
       }
     }
   }