diff options
author | Craig Scott <craig.scott@crascit.com> | 2019-11-12 13:28:34 (GMT) |
---|---|---|
committer | Kitware Robot <kwrobot@kitware.com> | 2019-11-12 13:28:46 (GMT) |
commit | 9a935adca9f969931cedd1b5a3fdfef5bfcbc9d4 (patch) | |
tree | 02caa234d71af44294df7e8961d2f926955b204c /Source | |
parent | bec38523de60cd7602b0fa89d38356c6f5e7cddd (diff) | |
parent | e01935ac9d61e22be49f26910a76769585d7a257 (diff) | |
download | CMake-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.cxx | 10 | ||||
-rw-r--r-- | Source/cmLocalGenerator.cxx | 8 |
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. |