PCH: Add missing dependency of REUSE_FROM shared compiler PDB

Have the `copy_pdb_idb` script depend on the PCH file so that the shared
compiler PDB is updated when the PCH is rebuilt.

Fixes: #25240
This commit is contained in:
Russell Greene
2023-09-08 11:37:57 -06:00
committed by Brad King
parent 91585ad105
commit 37d994294b
2 changed files with 9 additions and 6 deletions

View File

@@ -2770,10 +2770,10 @@ void cmLocalGenerator::AddPchDependencies(cmGeneratorTarget* target)
}
if (editAndContinueDebugInfo || msvc2008OrLess) {
this->CopyPchCompilePdb(config, target, *ReuseFrom,
this->CopyPchCompilePdb(config, lang, target, *ReuseFrom,
reuseTarget, { ".pdb", ".idb" });
} else if (programDatabaseDebugInfo) {
this->CopyPchCompilePdb(config, target, *ReuseFrom,
this->CopyPchCompilePdb(config, lang, target, *ReuseFrom,
reuseTarget, { ".pdb" });
}
}
@@ -2830,9 +2830,9 @@ void cmLocalGenerator::AddPchDependencies(cmGeneratorTarget* target)
}
void cmLocalGenerator::CopyPchCompilePdb(
const std::string& config, cmGeneratorTarget* target,
const std::string& ReuseFrom, cmGeneratorTarget* reuseTarget,
const std::vector<std::string>& extensions)
const std::string& config, const std::string& language,
cmGeneratorTarget* target, const std::string& ReuseFrom,
cmGeneratorTarget* reuseTarget, const std::vector<std::string>& extensions)
{
const std::string pdb_prefix =
this->GetGlobalGenerator()->IsMultiConfig() ? cmStrCat(config, "/") : "";
@@ -2916,6 +2916,7 @@ void cmLocalGenerator::CopyPchCompilePdb(
cc->SetCommandLines(commandLines);
cc->SetComment(no_message);
cc->SetStdPipesUTF8(true);
cc->AppendDepends({ reuseTarget->GetPchFile(config, language) });
if (this->GetGlobalGenerator()->IsVisualStudio()) {
cc->SetByproducts(outputs);

View File

@@ -649,7 +649,9 @@ private:
bool AllAppleArchSysrootsAreTheSame(const std::vector<std::string>& archs,
cmValue sysroot);
void CopyPchCompilePdb(const std::string& config, cmGeneratorTarget* target,
void CopyPchCompilePdb(const std::string& config,
const std::string& language,
cmGeneratorTarget* target,
const std::string& ReuseFrom,
cmGeneratorTarget* reuseTarget,
std::vector<std::string> const& extensions);