From 6c5e23f10ed88c1d478a77bab0bf4774b4b479eb Mon Sep 17 00:00:00 2001 From: dt <qtc-committer@nokia.com> Date: Tue, 28 Apr 2009 14:30:17 +0200 Subject: [PATCH] Fix $$OUT_PWD not beeing set for finding the target/destdir Qt Creator wouldn't find the correct target if shadow building a project that uses $$OUT_PWD, like for example itemviews-ng. We didn't set the necessary variable on the ProFileReader *, simplified the code to always use a ProFileReader created for the exact profilenode. --- src/plugins/qt4projectmanager/qt4nodes.cpp | 14 ++++++++++++-- src/plugins/qt4projectmanager/qt4nodes.h | 8 +++++--- src/plugins/qt4projectmanager/qt4project.cpp | 12 ------------ src/plugins/qt4projectmanager/qt4project.h | 1 - .../qt4projectmanager/qt4runconfiguration.cpp | 3 ++- .../qt4projectmanager/qt4runconfiguration.h | 5 +---- 6 files changed, 20 insertions(+), 23 deletions(-) diff --git a/src/plugins/qt4projectmanager/qt4nodes.cpp b/src/plugins/qt4projectmanager/qt4nodes.cpp index 66c32661c35..985b60aba73 100644 --- a/src/plugins/qt4projectmanager/qt4nodes.cpp +++ b/src/plugins/qt4projectmanager/qt4nodes.cpp @@ -48,6 +48,8 @@ #include <cpptools/cppmodelmanagerinterface.h> #include <cplusplus/CppDocument.h> #include <extensionsystem/pluginmanager.h> +#include <projectexplorer/projectexplorer.h> +#include <projectexplorer/buildmanager.h> #include <utils/qtcassert.h> @@ -498,8 +500,16 @@ QStringList Qt4PriFileNode::varNames(FileType type) return vars; } -#include <projectexplorer/projectexplorer.h> -#include <projectexplorer/buildmanager.h> +Qt4PriFileNode *Qt4PriFileNode::findProFileFor(const QString &fileName) +{ + if (fileName == path()) + return this; + foreach (ProjectNode *pn, subProjectNodes()) + if (Qt4PriFileNode *qt4PriFileNode = qobject_cast<Qt4PriFileNode *>(pn)) + if (Qt4PriFileNode *result = qt4PriFileNode->findProFileFor(fileName)) + return result; + return 0; +} /*! \class Qt4ProFileNode diff --git a/src/plugins/qt4projectmanager/qt4nodes.h b/src/plugins/qt4projectmanager/qt4nodes.h index 6da10fd9f47..d527725071f 100644 --- a/src/plugins/qt4projectmanager/qt4nodes.h +++ b/src/plugins/qt4projectmanager/qt4nodes.h @@ -123,6 +123,11 @@ public: bool renameFile(const FileType fileType, const QString &filePath, const QString &newFilePath); + Qt4PriFileNode *findProFileFor(const QString &string); + + //internal + ProFileReader *createProFileReader() const; + protected: void clear(); static QStringList varNames(FileType type); @@ -142,7 +147,6 @@ protected: ChangeType change); QString buildDir() const; - ProFileReader *createProFileReader() const; private slots: void scheduleUpdate(); @@ -198,8 +202,6 @@ private: QStringList subDirsPaths(ProFileReader *reader) const; QStringList qBuildSubDirsPaths(const QString &scanDir) const; - - void invalidate(); Qt4ProjectType m_projectType; diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp index ae6a76ecbc1..0f08672ebe1 100644 --- a/src/plugins/qt4projectmanager/qt4project.cpp +++ b/src/plugins/qt4projectmanager/qt4project.cpp @@ -584,18 +584,6 @@ void Qt4Project::update() //updateCodeModel(); } -ProFileReader *Qt4Project::createProFileReader() const -{ - ProFileReader *reader = new ProFileReader(); - connect(reader, SIGNAL(errorFound(const QString&)), - this, SLOT(proFileParseError(const QString&))); - QtVersion *version = qtVersion(activeBuildConfiguration()); - if (version->isValid()) { - reader->setQtVersion(version); - } - return reader; -} - /*! Returns whether the project is an application, or has an application as a subproject. */ diff --git a/src/plugins/qt4projectmanager/qt4project.h b/src/plugins/qt4projectmanager/qt4project.h index 6801fd0f40a..fc1feac3f29 100644 --- a/src/plugins/qt4projectmanager/qt4project.h +++ b/src/plugins/qt4projectmanager/qt4project.h @@ -164,7 +164,6 @@ public: virtual void newBuildConfiguration(const QString &buildConfiguration); QList<Internal::Qt4ProFileNode *> applicationProFiles() const; - Internal::ProFileReader *createProFileReader() const; // Those functions arein a few places. // The drawback is that we shouldn't actually depend on them beeing always there diff --git a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp index abcd410b4d1..a76543e7253 100644 --- a/src/plugins/qt4projectmanager/qt4runconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt4runconfiguration.cpp @@ -331,7 +331,8 @@ void Qt4RunConfiguration::updateTarget() return; //qDebug()<<"updateTarget"; Qt4Project *pro = static_cast<Qt4Project *>(project()); - ProFileReader *reader = pro->createProFileReader(); + Qt4PriFileNode * priFileNode = static_cast<Qt4Project *>(project())->rootProjectNode()->findProFileFor(m_proFilePath); + ProFileReader *reader = priFileNode->createProFileReader(); reader->setCumulative(false); reader->setQtVersion(pro->qtVersion(pro->activeBuildConfiguration())); diff --git a/src/plugins/qt4projectmanager/qt4runconfiguration.h b/src/plugins/qt4projectmanager/qt4runconfiguration.h index 3b59b65732c..d86f00227fc 100644 --- a/src/plugins/qt4projectmanager/qt4runconfiguration.h +++ b/src/plugins/qt4projectmanager/qt4runconfiguration.h @@ -47,9 +47,7 @@ class Qt4Project; namespace Internal { -class Qt4ProFileNode; - - +class Qt4PriFileNode; class Qt4RunConfiguration : public ProjectExplorer::ApplicationRunConfiguration { @@ -103,7 +101,6 @@ private slots: private: void updateTarget(); QStringList m_commandLineArguments; - Qt4ProFileNode *m_proFileNode; QString m_proFilePath; // Full path to the Application Pro File // Cached startup sub project information -- GitLab