diff --git a/src/plugins/qt4projectmanager/projectloadwizard.cpp b/src/plugins/qt4projectmanager/projectloadwizard.cpp index 892291cbe979c355d5d94b5ed5eb140b251ae706..8e9d4cbe6d3e11ee13de775264eda0c5aac2a05b 100644 --- a/src/plugins/qt4projectmanager/projectloadwizard.cpp +++ b/src/plugins/qt4projectmanager/projectloadwizard.cpp @@ -94,11 +94,15 @@ void ProjectLoadWizard::setupTargetPage() if (m_targetSetupPage) return; - QList<TargetSetupPage::ImportInfo> importVersions = TargetSetupPage::recursivelyCheckDirectoryForBuild(m_project->projectDirectory()); - importVersions.append(TargetSetupPage::recursivelyCheckDirectoryForBuild(m_project->defaultTopLevelBuildDirectory())); + QList<TargetSetupPage::ImportInfo> importVersions = + TargetSetupPage::recursivelyCheckDirectoryForBuild(m_project->projectDirectory(), + m_project->file()->fileName()); + importVersions.append(TargetSetupPage::recursivelyCheckDirectoryForBuild(m_project->defaultTopLevelBuildDirectory(), + m_project->file()->fileName())); importVersions.append(TargetSetupPage::importInfosForKnownQtVersions(m_project)); m_targetSetupPage = new TargetSetupPage(this); + m_targetSetupPage->setProFilePath(m_project->file()->fileName()); m_targetSetupPage->setImportInfos(importVersions); m_targetSetupPage->setImportDirectoryBrowsingEnabled(true); m_targetSetupPage->setImportDirectoryBrowsingLocation(m_project->projectDirectory()); diff --git a/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp b/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp index 2a74e1d4808000f22b79710a189bc024868b5d2a..f23f77507ef43c657009594c6821d3adf8073ff6 100644 --- a/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp +++ b/src/plugins/qt4projectmanager/wizards/targetsetuppage.cpp @@ -283,6 +283,11 @@ void TargetSetupPage::setPreferMobile(bool mobile) m_preferMobile = mobile; } +void TargetSetupPage::setProFilePath(const QString &path) +{ + m_proFilePath = path; +} + QList<TargetSetupPage::ImportInfo> TargetSetupPage::importInfosForKnownQtVersions(Qt4ProjectManager::Qt4Project *project) { @@ -323,7 +328,7 @@ QList<TargetSetupPage::ImportInfo> TargetSetupPage::filterImportInfos(const QSet } QList<TargetSetupPage::ImportInfo> -TargetSetupPage::recursivelyCheckDirectoryForBuild(const QString &directory, int maxdepth) +TargetSetupPage::recursivelyCheckDirectoryForBuild(const QString &directory, const QString &proFile, int maxdepth) { QList<ImportInfo> results; @@ -334,10 +339,11 @@ TargetSetupPage::recursivelyCheckDirectoryForBuild(const QString &directory, int QString qmakeBinary = QtVersionManager::findQMakeBinaryFromMakefile(directory); // Recurse into subdirectories: - if (qmakeBinary.isNull()) { + if (qmakeBinary.isNull() || !QtVersionManager::makefileIsFor(directory, proFile)) { QStringList subDirs = QDir(directory).entryList(QDir::Dirs | QDir::NoDotAndDotDot); foreach (QString subDir, subDirs) - results.append(recursivelyCheckDirectoryForBuild(directory + QChar('/') + subDir, maxdepth - 1)); + results.append(recursivelyCheckDirectoryForBuild(QDir::cleanPath(directory + QChar('/') + subDir), + proFile, maxdepth - 1)); return results; } @@ -385,7 +391,7 @@ void TargetSetupPage::importDirectoryAdded(const QString &directory) m_directoryChooser->setPath(QString()); QList<ImportInfo> tmp = m_infos; m_infos.clear(); // Clear m_infos without deleting temporary QtVersions! - tmp.append(recursivelyCheckDirectoryForBuild(directory)); + tmp.append(recursivelyCheckDirectoryForBuild(directory, m_proFilePath)); setImportInfos(tmp); } diff --git a/src/plugins/qt4projectmanager/wizards/targetsetuppage.h b/src/plugins/qt4projectmanager/wizards/targetsetuppage.h index cec4c2cfa11dd0e4458da80e8e1baa9d91fd45e5..9cd23791aeee6660d3b154e310bd76079b6b61b3 100644 --- a/src/plugins/qt4projectmanager/wizards/targetsetuppage.h +++ b/src/plugins/qt4projectmanager/wizards/targetsetuppage.h @@ -95,12 +95,14 @@ public: void setImportDirectoryBrowsingLocation(const QString &directory); void setShowLocationInformation(bool location); void setPreferMobile(bool mobile); + void setProFilePath(const QString &dir); static QList<ImportInfo> importInfosForKnownQtVersions(Qt4ProjectManager::Qt4Project *project); static QList<ImportInfo> filterImportInfos(const QSet<QString> &validTargets, const QList<ImportInfo> &infos); - static QList<ImportInfo> recursivelyCheckDirectoryForBuild(const QString &directory, int maxdepth = 3); + static QList<ImportInfo> recursivelyCheckDirectoryForBuild(const QString &directory, + const QString &proFile, int maxdepth = 3); bool hasSelection() const; bool isTargetSelected(const QString &targetid) const; @@ -120,6 +122,7 @@ private: Utils::PathChooser *m_directoryChooser; QLabel *m_directoryLabel; bool m_preferMobile; + QString m_proFilePath; }; } // namespace Internal