summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorCraig Scott <craig.scott@crascit.com>2019-11-12 13:28:34 (GMT)
committerKitware Robot <kwrobot@kitware.com>2019-11-12 13:28:46 (GMT)
commit9a935adca9f969931cedd1b5a3fdfef5bfcbc9d4 (patch)
tree02caa234d71af44294df7e8961d2f926955b204c /Source
parentbec38523de60cd7602b0fa89d38356c6f5e7cddd (diff)
parente01935ac9d61e22be49f26910a76769585d7a257 (diff)
downloadCMake-9a935adca9f969931cedd1b5a3fdfef5bfcbc9d4.zip
CMake-9a935adca9f969931cedd1b5a3fdfef5bfcbc9d4.tar.gz
CMake-9a935adca9f969931cedd1b5a3fdfef5bfcbc9d4.tar.bz2
Merge topic 'pch-no-duplicates'
e01935ac9d PCH: No repeated path for internal generated PCH files Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !4030
Diffstat (limited to 'Source')
-rw-r--r--Source/cmGeneratorTarget.cxx10
-rw-r--r--Source/cmLocalGenerator.cxx8
2 files changed, 10 insertions, 8 deletions
diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx
index cb9f49e..dd3fefa 100644
--- a/Source/cmGeneratorTarget.cxx
+++ b/Source/cmGeneratorTarget.cxx
@@ -3376,14 +3376,8 @@ std::string cmGeneratorTarget::GetPchHeader(const std::string& config,
this->GetGlobalGenerator()->FindGeneratorTarget(pchReuseFrom);
}
- if (this->GetGlobalGenerator()->IsMultiConfig()) {
- filename = cmStrCat(
- generatorTarget->LocalGenerator->GetCurrentBinaryDirectory(), "/");
- } else {
- // For GCC we need to have the header file .h[xx]
- // next to the .h[xx].gch file
- filename = generatorTarget->ObjectDirectory;
- }
+ filename = cmStrCat(
+ generatorTarget->LocalGenerator->GetCurrentBinaryDirectory(), "/");
const std::map<std::string, std::string> languageToExtension = {
{ "C", ".h" },
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx
index 4b9b015..db35c58 100644
--- a/Source/cmLocalGenerator.cxx
+++ b/Source/cmLocalGenerator.cxx
@@ -3122,6 +3122,14 @@ std::string cmLocalGenerator::GetObjectFileNameWithoutTarget(
const char* pchExtension = source.GetProperty("PCH_EXTENSION");
if (pchExtension) {
customOutputExtension = pchExtension;
+
+ // Make sure that for the CMakeFiles/<target>.dir/cmake_pch.h|xx.c|xx
+ // source file, we don't end up having
+ // CMakeFiles/<target>.dir/CMakeFiles/<target>.dir/cmake_pch.h|xx.pch
+ cmsys::RegularExpression var("(CMakeFiles/[^/]+.dir/)");
+ while (var.find(objectName)) {
+ objectName.erase(var.start(), var.end() - var.start());
+ }
}
// Remove the source extension if it is to be replaced.