소스 검색

FASTBuild: fix multi-language PCHs

Fixes: #27371
Eduard Voronkin 1 개월 전
부모
커밋
878d154322
1개의 변경된 파일5개의 추가작업 그리고 3개의 파일을 삭제
  1. 5 3
      Source/cmFastbuildNormalTargetGenerator.cxx

+ 5 - 3
Source/cmFastbuildNormalTargetGenerator.cxx

@@ -1499,11 +1499,13 @@ void cmFastbuildNormalTargetGenerator::GenerateObjects(FastbuildTarget& target)
   objects.reserve(nodesPermutations.size());
   for (auto& val : nodesPermutations) {
     auto& node = val.second;
-    objects.emplace_back(std::move(node));
-    if (!objects.back().PCHInputFile.empty()) {
+    if (!node.PCHInputFile.empty()) {
       // Node that produces PCH should be the first one, since other nodes
       // might reuse this PCH.
-      std::swap(*objects.begin(), objects.back());
+      // Note: we might have several such nodes for different languages.
+      objects.insert(objects.begin(), std::move(node));
+    } else {
+      objects.emplace_back(std::move(node));
     }
   }
   if (useUnity) {