PCH: Do not mark PCH-header as generated

The PCH header file itself is written by CMake and is not generated by
part of the buildsystem.  Therefore the `GENERATED` property is not
appropriate to set because the file is always present before the build
starts.  We already do not mark the PCH source file as `GENERATED`
either.

This is a preparation for solving #18399, which will no longer allow to
unset the `GENERATED` property from a source-file once it was set.

Fixes: #21437
Signed-off-by: Deniz Bahadir <dbahadir@benocs.com>
This commit is contained in:
Deniz Bahadir
2020-11-13 23:34:30 +01:00
committed by Brad King
parent 01b473b810
commit 7524501d89

View File

@@ -2607,14 +2607,16 @@ void cmLocalGenerator::AddPchDependencies(cmGeneratorTarget* target)
// Add pchHeader to source files, which will
// be grouped as "Precompile Header File"
auto pchHeader_sf = this->Makefile->GetOrCreateSource(
pchHeader, true, cmSourceFileLocationKind::Known);
pchHeader, false, cmSourceFileLocationKind::Known);
std::string err;
pchHeader_sf->ResolveFullPath(&err);
// The pch file is generated, but mark it as not generated
// so that a clean operation will not remove it from disk
pchHeader_sf->SetProperty("GENERATED", "0");
if (!err.empty()) {
std::ostringstream msg;
msg << "Unable to resolve full path of PCH-header '" << pchHeader
<< "' assigned to target " << target->GetName()
<< ", although its path is supposed to be known!";
this->IssueMessage(MessageType::FATAL_ERROR, msg.str());
}
target->AddSource(pchHeader);
}
}