From b56b1b1fa23ea4a80adb76302e93a4a66cad9ff8 Mon Sep 17 00:00:00 2001 From: Daniel Teske Date: Fri, 21 Aug 2015 11:35:00 +0200 Subject: [PATCH] QmakeProject: Use QMAKE_EXT_H to generate correct ui_h paths So that the code model can find the right files for ui files that haven't been build. Change-Id: I438a3ab9806c8ff6c47e5e188228a31ffb917bdf Task-number: QTCREATORBUG-14910 Reviewed-by: Eike Ziller --- src/plugins/qmakeprojectmanager/qmakenodes.cpp | 10 +++++++--- src/plugins/qmakeprojectmanager/qmakenodes.h | 4 +++- src/plugins/qmakeprojectmanager/qmakeproject.cpp | 2 +- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/plugins/qmakeprojectmanager/qmakenodes.cpp b/src/plugins/qmakeprojectmanager/qmakenodes.cpp index 3b51ea5e06d..b9ff26cedb7 100644 --- a/src/plugins/qmakeprojectmanager/qmakenodes.cpp +++ b/src/plugins/qmakeprojectmanager/qmakenodes.cpp @@ -1934,6 +1934,7 @@ EvalResult *QmakeProFileNode::evaluate(const EvalInput &input) result->newVarValues[ObjCHeaderVar] = fileListForVar(input.readerExact, input.readerCumulative, QLatin1String("OBJECTIVE_HEADERS"), input.projectDir, input.buildDirectory); result->newVarValues[UiDirVar] = QStringList() << uiDirPath(input.readerExact, input.buildDirectory); + result->newVarValues[UiHeaderExtensionVar] = QStringList() << input.readerExact->value(QLatin1String("QMAKE_EXT_H")); result->newVarValues[MocDirVar] = QStringList() << mocDirPath(input.readerExact, input.buildDirectory); result->newVarValues[ResourceVar] = fileListForVar(input.readerExact, input.readerCumulative, QLatin1String("RESOURCES"), input.projectDir, input.buildDirectory); @@ -2481,13 +2482,15 @@ Utils::FileName QmakeProFileNode::uiDirectory(const Utils::FileName &buildDir) c return buildDir; } -QString QmakeProFileNode::uiHeaderFile(const Utils::FileName &uiDir, const FileName &formFile) +QString QmakeProFileNode::uiHeaderFile(const Utils::FileName &uiDir, const FileName &formFile, + const QString &extension) { if (uiDir.isEmpty()) return QString(); Utils::FileName uiHeaderFilePath = uiDir; - uiHeaderFilePath.appendPath(QLatin1String("ui_") + formFile.toFileInfo().completeBaseName() + QLatin1String(".h")); + uiHeaderFilePath.appendPath(QLatin1String("ui_") + formFile.toFileInfo().completeBaseName() + + extension); return QDir::cleanPath(uiHeaderFilePath.toString()); } @@ -2506,8 +2509,9 @@ void QmakeProFileNode::updateUiFiles(const QString &buildDir) // Find the UiDir, there can only ever be one const Utils::FileName uiDir = uiDirectory(Utils::FileName::fromString(buildDir)); + const QString uiExtensions = singleVariableValue(UiHeaderExtensionVar); foreach (const FileNode *uiFile, uiFiles) { - QString headerFile = uiHeaderFile(uiDir, uiFile->path()); + QString headerFile = uiHeaderFile(uiDir, uiFile->path(), uiExtensions); if (!headerFile.isEmpty()) m_uiFiles.insert(uiFile->path().toString(), headerFile); } diff --git a/src/plugins/qmakeprojectmanager/qmakenodes.h b/src/plugins/qmakeprojectmanager/qmakenodes.h index 0c3f93fb15c..68a5a35e930 100644 --- a/src/plugins/qmakeprojectmanager/qmakenodes.h +++ b/src/plugins/qmakeprojectmanager/qmakenodes.h @@ -91,6 +91,7 @@ enum QmakeVariable { ResourceVar, ExactResourceVar, UiDirVar, + UiHeaderExtensionVar, MocDirVar, PkgConfigVar, PrecompiledHeaderVar, @@ -338,7 +339,8 @@ public: QString buildDir(QmakeBuildConfiguration *bc = 0) const; Utils::FileName uiDirectory(const Utils::FileName &buildDir) const; - static QString uiHeaderFile(const Utils::FileName &uiDir, const Utils::FileName &formFile); + static QString uiHeaderFile(const Utils::FileName &uiDir, const Utils::FileName &formFile, + const QString &extension); QHash uiFiles() const; QmakeProFileNode *findProFileFor(const Utils::FileName &string) const; diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.cpp b/src/plugins/qmakeprojectmanager/qmakeproject.cpp index 96915a08e27..e8bd8d7fc3c 100644 --- a/src/plugins/qmakeprojectmanager/qmakeproject.cpp +++ b/src/plugins/qmakeprojectmanager/qmakeproject.cpp @@ -899,7 +899,7 @@ QString QmakeProject::generatedUiHeader(const FileName &formFile) const if (const QmakeProFileNode *pro = proFileNodeOf(m_rootProjectNode, FormType, formFile)) return QmakeProFileNode::uiHeaderFile( pro->uiDirectory(Utils::FileName::fromString(pro->buildDir())), - formFile); + formFile, pro->singleVariableValue(QmakeVariable::UiHeaderExtensionVar)); return QString(); }