diff options
author | Ben Boeckel <ben.boeckel@kitware.com> | 2023-10-20 02:11:33 (GMT) |
---|---|---|
committer | Ben Boeckel <ben.boeckel@kitware.com> | 2023-10-20 03:09:33 (GMT) |
commit | 51f9d9f0a2a85744e9214aaa24054fabb9e79355 (patch) | |
tree | ca7e17167262d7598f48fdbb66a3ebf083d596f2 | |
parent | dec211da56e19d07503b4a4e8002dc76359dc588 (diff) | |
download | CMake-51f9d9f0a2a85744e9214aaa24054fabb9e79355.zip CMake-51f9d9f0a2a85744e9214aaa24054fabb9e79355.tar.gz CMake-51f9d9f0a2a85744e9214aaa24054fabb9e79355.tar.bz2 |
cmNinjaTargetGenerator: avoid traversing old outputs repeatedly
We actually only need to look at outputs just added to the vector, not
all outputs that have been detected so far.
-rw-r--r-- | Source/cmNinjaTargetGenerator.cxx | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx index 0bda945..af47158 100644 --- a/Source/cmNinjaTargetGenerator.cxx +++ b/Source/cmNinjaTargetGenerator.cxx @@ -1048,10 +1048,13 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatements( cmCustomCommandGenerator ccg(*cc, config, this->GetLocalGenerator()); const std::vector<std::string>& ccoutputs = ccg.GetOutputs(); const std::vector<std::string>& ccbyproducts = ccg.GetByproducts(); + auto const nPreviousOutputs = ccouts.size(); ccouts.insert(ccouts.end(), ccoutputs.begin(), ccoutputs.end()); ccouts.insert(ccouts.end(), ccbyproducts.begin(), ccbyproducts.end()); if (usePrivateGeneratedSources) { auto it = ccouts.begin(); + // Skip over outputs that were already detected. + std::advance(it, nPreviousOutputs); while (it != ccouts.end()) { cmFileSet const* fileset = this->GeneratorTarget->GetFileSetForSource( |