summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2022-02-03 20:46:24 (GMT)
committerBrad King <brad.king@kitware.com>2022-02-03 20:52:22 (GMT)
commitdd1e2cc80c1450cc6fcb35d114f4cf999e4c0315 (patch)
treec71e7e62c3af5a4ed49a2d37b2d3c430ec1f5873 /Source
parent3d85c0072db6e97938b9fe7157483bcd41918b08 (diff)
downloadCMake-dd1e2cc80c1450cc6fcb35d114f4cf999e4c0315.zip
CMake-dd1e2cc80c1450cc6fcb35d114f4cf999e4c0315.tar.gz
CMake-dd1e2cc80c1450cc6fcb35d114f4cf999e4c0315.tar.bz2
VS: Simplify generation of per-source PCH settings
Avoid looking up the PCH create/use flags just to map them through flag tables back to the `.vcxproj` settings. Instead, simply generate the PCH settings directly for each source file. Since commit 9df1f33c9a (VisualStudio: move PCH rules to projects when possible., 2020-10-15, v3.20.0-rc1~638^2) we already do this for the target-wide PCH settings.
Diffstat (limited to 'Source')
-rw-r--r--Source/cmVisualStudio10TargetGenerator.cxx25
1 files changed, 16 insertions, 9 deletions
diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx
index be46825..7b197fa 100644
--- a/Source/cmVisualStudio10TargetGenerator.cxx
+++ b/Source/cmVisualStudio10TargetGenerator.cxx
@@ -2736,11 +2736,15 @@ void cmVisualStudio10TargetGenerator::OutputSourceSpecificFlags(
if (needsPCHFlags) {
// Add precompile headers compile options.
- std::string expandedOptions;
- std::string pchOptions;
if (makePCH) {
- pchOptions =
- this->GeneratorTarget->GetPchCreateCompileOptions(config, lang);
+ clOptions.AddFlag("PrecompiledHeader", "Create");
+ std::string pchHeader =
+ this->GeneratorTarget->GetPchHeader(config, lang);
+ clOptions.AddFlag("PrecompiledHeaderFile", pchHeader);
+ std::string pchFile =
+ this->GeneratorTarget->GetPchFile(config, lang);
+ clOptions.AddFlag("PrecompiledHeaderOutputFile", pchFile);
+ clOptions.AddFlag("ForcedIncludeFiles", pchHeader);
} else if (useNoPCH) {
clOptions.AddFlag("PrecompiledHeader", "NotUsing");
} else if (useSharedPCH) {
@@ -2748,12 +2752,15 @@ void cmVisualStudio10TargetGenerator::OutputSourceSpecificFlags(
this->GeneratorTarget->GetPchHeader(config, lang);
clOptions.AddFlag("ForcedIncludeFiles", pchHeader);
} else if (useDifferentLangPCH) {
- pchOptions =
- this->GeneratorTarget->GetPchUseCompileOptions(config, lang);
+ clOptions.AddFlag("PrecompiledHeader", "Use");
+ std::string pchHeader =
+ this->GeneratorTarget->GetPchHeader(config, lang);
+ clOptions.AddFlag("PrecompiledHeaderFile", pchHeader);
+ std::string pchFile =
+ this->GeneratorTarget->GetPchFile(config, lang);
+ clOptions.AddFlag("PrecompiledHeaderOutputFile", pchFile);
+ clOptions.AddFlag("ForcedIncludeFiles", pchHeader);
}
- this->LocalGenerator->AppendCompileOptions(expandedOptions,
- pchOptions);
- clOptions.Parse(expandedOptions);
}
if (!options.empty()) {