瀏覽代碼

Merge topic 'genex-target-objects-ordering'

caa4b7b8 genex: Preserve order while evaluating TARGET_OBJECTS
Brad King 11 年之前
父節點
當前提交
ee6c79d1a3
共有 1 個文件被更改,包括 8 次插入4 次删除
  1. 8 4
      Source/cmGeneratorExpressionEvaluator.cxx

+ 8 - 4
Source/cmGeneratorExpressionEvaluator.cxx

@@ -1286,12 +1286,16 @@ static const struct TargetObjectsNode : public cmGeneratorExpressionNode
     std::string obj_dir = gt->ObjectDirectory;
     std::string result;
     const char* sep = "";
-    for(std::map<cmSourceFile const*, std::string>::const_iterator it
-        = mapping.begin(); it != mapping.end(); ++it)
+    for(std::vector<cmSourceFile const*>::const_iterator it
+        = objectSources.begin(); it != objectSources.end(); ++it)
       {
-      assert(!it->second.empty());
+      // Find the object file name corresponding to this source file.
+      std::map<cmSourceFile const*, std::string>::const_iterator
+        map_it = mapping.find(*it);
+      // It must exist because we populated the mapping just above.
+      assert(!map_it->second.empty());
       result += sep;
-      std::string objFile = obj_dir + it->second;
+      std::string objFile = obj_dir + map_it->second;
       cmSourceFile* sf = context->Makefile->GetOrCreateSource(objFile, true);
       sf->SetObjectLibrary(tgtName);
       sf->SetProperty("EXTERNAL_OBJECT", "1");