summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRussell Greene <russell@shotover.com>2023-09-08 17:37:57 (GMT)
committerBrad King <brad.king@kitware.com>2023-09-11 12:59:20 (GMT)
commit37d994294ba5af61395289380e9cf64ed3046e59 (patch)
treebd8687349568438682c2d96e82ef7d61a3e23f66
parent91585ad105ff611fbaa507e758a5c9043bb9d142 (diff)
downloadCMake-37d994294ba5af61395289380e9cf64ed3046e59.zip
CMake-37d994294ba5af61395289380e9cf64ed3046e59.tar.gz
CMake-37d994294ba5af61395289380e9cf64ed3046e59.tar.bz2
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
-rw-r--r--Source/cmLocalGenerator.cxx11
-rw-r--r--Source/cmLocalGenerator.h4
2 files changed, 9 insertions, 6 deletions
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx
index 6472031..63c8aa8 100644
--- a/Source/cmLocalGenerator.cxx
+++ b/Source/cmLocalGenerator.cxx
@@ -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);
diff --git a/Source/cmLocalGenerator.h b/Source/cmLocalGenerator.h
index eddc033..a920cfe 100644
--- a/Source/cmLocalGenerator.h
+++ b/Source/cmLocalGenerator.h
@@ -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);