Unity: Proper handling of object libraries

Fixes: #20051
This commit is contained in:
Cristian Adam
2019-12-07 15:03:16 +01:00
parent 5ae07e7166
commit fa93b4a59b
5 changed files with 31 additions and 0 deletions
+9
View File
@@ -1567,6 +1567,15 @@ bool cmGlobalGenerator::AddAutomaticSources()
lg->AddPchDependencies(gt);
}
}
// The above transformations may have changed the classification of sources.
// Clear the source list and classification cache (KindedSources) of all
// targets so that it will be recomputed correctly by the generators later
// now that the above transformations are done for all targets.
for (cmLocalGenerator* lg : this->LocalGenerators) {
for (cmGeneratorTarget* gt : lg->GetGeneratorTargets()) {
gt->ClearSourcesCache();
}
}
return true;
}
+2
View File
@@ -2307,6 +2307,7 @@ void cmLocalGenerator::AddPchDependencies(cmGeneratorTarget* target)
}
const std::string buildType = cmSystemTools::UpperCase(config);
// FIXME: Refactor collection of sources to not evaluate object libraries.
std::vector<cmSourceFile*> sources;
target->GetSourceFiles(sources, buildType);
@@ -2469,6 +2470,7 @@ void cmLocalGenerator::AddUnityBuild(cmGeneratorTarget* target)
cmStrCat(this->GetCurrentBinaryDirectory(), "/CMakeFiles/",
target->GetName(), ".dir/Unity/");
// FIXME: Refactor collection of sources to not evaluate object libraries.
std::vector<cmSourceFile*> sources;
target->GetSourceFiles(sources, buildType);