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/cmGeneratorTarget.cxx | |
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/cmGeneratorTarget.cxx')
-rw-r--r-- | Source/cmGeneratorTarget.cxx | 10 |
1 files changed, 10 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"); |