diff options
author | Tobias Hieta <tobias@plex.tv> | 2020-08-28 07:16:04 (GMT) |
---|---|---|
committer | Tobias Hieta <tobias@plex.tv> | 2020-09-02 06:30:55 (GMT) |
commit | 8c8f03422e3197a3414a8ed1413fcb9576df0f4b (patch) | |
tree | 526e5b6341f3f63dd848623be82448fab17f5285 /Source | |
parent | 8c833ff0e17e63d9cbf17622abcb70a5fab240b8 (diff) | |
download | CMake-8c8f03422e3197a3414a8ed1413fcb9576df0f4b.zip CMake-8c8f03422e3197a3414a8ed1413fcb9576df0f4b.tar.gz CMake-8c8f03422e3197a3414a8ed1413fcb9576df0f4b.tar.bz2 |
PCH: Template instantiation support
Adds PCH_INSTANTIATE_TEMPLATES target property for enabling template
instantiation in precompiled headers.
Enabled by default. Currently only supported for Clang 11 and newer.
Implements #21133.
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmGeneratorTarget.cxx | 10 | ||||
-rw-r--r-- | Source/cmTarget.cxx | 1 |
2 files changed, 11 insertions, 0 deletions
diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index 7c526a0..de981c1 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -4078,6 +4078,16 @@ std::string cmGeneratorTarget::GetPchCreateCompileOptions( cmStrCat("CMAKE_", language, "_COMPILE_OPTIONS_INVALID_PCH")); } + if (this->GetPropertyAsBool("PCH_INSTANTIATE_TEMPLATES")) { + std::string varName = cmStrCat( + "CMAKE_", language, "_COMPILE_OPTIONS_INSTANTIATE_TEMPLATES_PCH"); + std::string instantiateOption = + this->Makefile->GetSafeDefinition(varName); + if (!instantiateOption.empty()) { + createOptionList = cmStrCat(createOptionList, ";", instantiateOption); + } + } + const std::string createOptVar = cmStrCat("CMAKE_", language, "_COMPILE_OPTIONS_CREATE_PCH"); diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index bea9001..6aa23c2 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -377,6 +377,7 @@ cmTarget::cmTarget(std::string const& name, cmStateEnums::TargetType type, initPropValue("UNITY_BUILD_BATCH_SIZE", "8"); initPropValue("UNITY_BUILD_MODE", "BATCH"); initPropValue("PCH_WARN_INVALID", "ON"); + initPropValue("PCH_INSTANTIATE_TEMPLATES", "ON"); #ifdef __APPLE__ if (this->GetGlobalGenerator()->IsXcode()) { |