From c4e15769ec43ff46ec08f639c1f09f9fd8872225 Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Fri, 4 Aug 2023 16:46:42 +0200 Subject: [PATCH] CMakePM: Fix AUTOUIC ui_header.h file code completion The wrong header was reported to the extraCompiler when AUTOUIC was set. Fixes: QTCREATORBUG-28787 Change-Id: I92d37e56ee5e45229545184e4f4911764834ed67 Reviewed-by: Christian Kandeler --- .../cmakeprojectmanager/cmakebuildsystem.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp index 9abb3597d15..329048b19cc 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp @@ -654,9 +654,17 @@ FilePaths CMakeBuildSystem::filesGeneratedFrom(const FilePath &sourceFile) const FilePath generatedFilePath = buildConfiguration()->buildDirectory().resolvePath(relativePath); if (sourceFile.suffix() == "ui") { - generatedFilePath = generatedFilePath - .pathAppended("ui_" + sourceFile.completeBaseName() + ".h"); - return {generatedFilePath}; + const QString generatedFileSuffix = "ui_" + sourceFile.completeBaseName() + ".h"; + + // If AUTOUIC reports the generated header file name, use that path + FilePaths generatedFilePaths = this->project()->files([generatedFileSuffix](const Node *n) { + return Project::GeneratedFiles(n) && n->filePath().endsWith(generatedFileSuffix); + }); + + if (generatedFilePaths.empty()) + generatedFilePaths = {generatedFilePath.pathAppended(generatedFileSuffix)}; + + return generatedFilePaths; } if (sourceFile.suffix() == "scxml") { generatedFilePath = generatedFilePath.pathAppended(sourceFile.completeBaseName());