diff options
author | Cristian Adam <cristian.adam@gmail.com> | 2021-08-07 15:07:55 (GMT) |
---|---|---|
committer | Cristian Adam <cristian.adam@gmail.com> | 2021-09-13 15:12:11 (GMT) |
commit | bbcdac4e5d53de12013c6af6395b28e4816f7823 (patch) | |
tree | 1d18f8ca2efc885fac477e2ce832bb161fdddd1d /Source/cmLocalGenerator.cxx | |
parent | cc94429c61fcdff73ff78430692ff12ed1fff29b (diff) | |
download | CMake-bbcdac4e5d53de12013c6af6395b28e4816f7823.zip CMake-bbcdac4e5d53de12013c6af6395b28e4816f7823.tar.gz CMake-bbcdac4e5d53de12013c6af6395b28e4816f7823.tar.bz2 |
PCH: Fix all-language precompile header support in Xcode
Fixes: #22384
Diffstat (limited to 'Source/cmLocalGenerator.cxx')
-rw-r--r-- | Source/cmLocalGenerator.cxx | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 028952a..016653b 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -2512,6 +2512,16 @@ void cmLocalGenerator::AddPchDependencies(cmGeneratorTarget* target) static const std::array<std::string, 4> langs = { { "C", "CXX", "OBJC", "OBJCXX" } }; + bool haveAnyPch = false; + if (this->GetGlobalGenerator()->IsXcode()) { + for (const std::string& lang : langs) { + const std::string pchHeader = target->GetPchHeader(config, lang, ""); + if (!pchHeader.empty()) { + haveAnyPch = true; + } + } + } + for (const std::string& lang : langs) { auto langSources = std::count_if( sources.begin(), sources.end(), [lang](cmSourceFile* sf) { @@ -2552,6 +2562,11 @@ void cmLocalGenerator::AddPchDependencies(cmGeneratorTarget* target) const std::string pchHeader = target->GetPchHeader(config, lang, arch); if (pchSource.empty() || pchHeader.empty()) { + if (this->GetGlobalGenerator()->IsXcode() && haveAnyPch) { + for (auto* sf : sources) { + sf->SetProperty("SKIP_PRECOMPILE_HEADERS", "ON"); + } + } continue; } |