From 8f2702005a250a9abefedd01596f69ca95518612 Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Tue, 26 May 2020 13:12:09 +0200 Subject: AutoMoc: Configure AutoMoc after generated sources (PCH, Unity) Fixes: #20119 --- Source/cmGlobalGenerator.cxx | 8 ++++---- Source/cmLocalGenerator.cxx | 8 +++++++- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 0b7ba04..6f73b0c 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -1426,13 +1426,13 @@ bool cmGlobalGenerator::Compute() // so create the map from project name to vector of local generators this->FillProjectMap(); - // Iterate through all targets and set up AUTOMOC, AUTOUIC and AUTORCC - if (!this->QtAutoGen()) { + // Add automatically generated sources (e.g. unity build). + if (!this->AddAutomaticSources()) { return false; } - // Add automatically generated sources (e.g. unity build). - if (!this->AddAutomaticSources()) { + // Iterate through all targets and set up AUTOMOC, AUTOUIC and AUTORCC + if (!this->QtAutoGen()) { return false; } diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index ad1cbd8..e42eb58 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -2750,9 +2750,14 @@ 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, false, cmSourceFileLocationKind::Known); + pchHeader, true, 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"); + target->AddSource(pchHeader); } } @@ -2767,6 +2772,7 @@ inline void RegisterUnitySources(cmGeneratorTarget* target, cmSourceFile* sf, { target->AddSourceFileToUnityBatch(sf->ResolveFullPath()); sf->SetProperty("UNITY_SOURCE_FILE", filename.c_str()); + sf->SetProperty("SKIP_AUTOGEN", "ON"); } inline void IncludeFileInUnitySources(cmGeneratedFileStream& unity_file, -- cgit v0.12