diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.h b/src/plugins/cmakeprojectmanager/cmakeproject.h index b34c870f78d8f5d7528538dfcaab62e6c8a4158c..df456ca8f5ec25cf0ef1e55740224570ab31b48e 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.h +++ b/src/plugins/cmakeprojectmanager/cmakeproject.h @@ -122,7 +122,6 @@ public: ProjectExplorer::ToolChain::ToolChainType toolChainType() const; ProjectExplorer::ToolChain *toolChain(ProjectExplorer::BuildConfiguration *configuration) const; - bool parseCMakeLists(); protected: virtual void saveSettingsImpl(ProjectExplorer::PersistentSettingsWriter &writer); virtual bool restoreSettingsImpl(ProjectExplorer::PersistentSettingsReader &reader); @@ -135,6 +134,7 @@ private slots: void slotActiveBuildConfiguration(); private: + bool parseCMakeLists(); void updateToolChain(const QString &compiler); void buildTree(CMakeProjectNode *rootNode, QList<ProjectExplorer::FileNode *> list); @@ -155,6 +155,8 @@ private: ProjectExplorer::FileWatcher *m_watcher; bool m_insideFileChanged; QSet<QString> m_watchedFiles; + + friend class CMakeBuildConfigurationFactory; // for parseCMakeLists }; class CMakeCbpParser : public QXmlStreamReader diff --git a/src/plugins/projectexplorer/buildconfiguration.cpp b/src/plugins/projectexplorer/buildconfiguration.cpp index 237198e72b88142b36b457cda3f91f0f5539657f..ea2f1ebc28fd988f25ef9b8d1e6a1947ea1fd1b4 100644 --- a/src/plugins/projectexplorer/buildconfiguration.cpp +++ b/src/plugins/projectexplorer/buildconfiguration.cpp @@ -33,10 +33,6 @@ using namespace ProjectExplorer; -BuildConfiguration::BuildConfiguration() -{ -} - BuildConfiguration::BuildConfiguration(const QString &name) : m_name(name) { diff --git a/src/plugins/projectexplorer/buildconfiguration.h b/src/plugins/projectexplorer/buildconfiguration.h index 06a5931cf7821d1ee0c79487e44ab3a1d675fd7c..306242598db003c4271223b180daf097447dac41 100644 --- a/src/plugins/projectexplorer/buildconfiguration.h +++ b/src/plugins/projectexplorer/buildconfiguration.h @@ -41,27 +41,30 @@ namespace ProjectExplorer { +class Project; + class PROJECTEXPLORER_EXPORT BuildConfiguration : public QObject { Q_OBJECT public: - explicit BuildConfiguration(); BuildConfiguration(const QString &name); BuildConfiguration(const QString &name, BuildConfiguration *source); - void setName(const QString &name); QString name() const; QString displayName() const; void setDisplayName(const QString &name); QVariant value(const QString &key) const; void setValue(const QString &key, QVariant value); + QMap<QString, QVariant> toMap() const; void setValuesFromMap(QMap<QString, QVariant> map); - private: + void setName(const QString &name); + QHash<QString, QVariant> m_values; QString m_name; + friend class Project; }; class PROJECTEXPLORER_EXPORT IBuildConfigurationFactory : public QObject diff --git a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp index 5d22aaa707b52f39592ed13fb38c9b448bc8de75..1fe4d3eee6c57f2c610838e3e3820f1b08136530 100644 --- a/src/plugins/projectexplorer/buildsettingspropertiespage.cpp +++ b/src/plugins/projectexplorer/buildsettingspropertiespage.cpp @@ -272,6 +272,7 @@ void BuildSettingsWidget::createConfiguration() QAction *action = qobject_cast<QAction *>(sender()); const QString &type = action->data().toString(); if (m_project->buildConfigurationFactory()->create(type)) { + // TODO switching to last buildconfiguration in list might not be what we want m_buildConfiguration = m_project->buildConfigurations().last()->name(); updateBuildSettings(); } diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp index 843d1ce6e128017f3e9b48359397df08f5b24336..94a9585b023c3794857e6e71072495a596c58d67 100644 --- a/src/plugins/projectexplorer/project.cpp +++ b/src/plugins/projectexplorer/project.cpp @@ -216,7 +216,7 @@ bool Project::restoreSettings() if (!restoreSettingsImpl(reader)) return false; - if (m_activeBuildConfiguration.isEmpty() && !m_buildConfigurations.isEmpty()) + if (m_activeBuildConfiguration.isEmpty() && !m_buildConfigurationValues.isEmpty()) setActiveBuildConfiguration(m_buildConfigurationValues.at(0)); if (!m_activeRunConfiguration && !m_runConfigurations.isEmpty()) diff --git a/src/plugins/projectexplorer/project.h b/src/plugins/projectexplorer/project.h index 80ea103118eb526b2274e972cd033f16c05aaf98..dbdd542d70209b635e79279b4a2b8356cc507bba 100644 --- a/src/plugins/projectexplorer/project.h +++ b/src/plugins/projectexplorer/project.h @@ -101,6 +101,7 @@ public: void copyBuildConfiguration(const QString &source, const QString &dest); BuildConfiguration *buildConfiguration(const QString & name) const; QList<BuildConfiguration *> buildConfigurations() const; + // remove and add "QString uniqueConfigurationDisplayName(const QString &proposedName) const" instead void setDisplayNameFor(BuildConfiguration *configuration, const QString &displayName); BuildConfiguration *activeBuildConfiguration() const; void setActiveBuildConfiguration(BuildConfiguration *configuration); @@ -184,7 +185,6 @@ protected: private: QList<BuildStep *> m_buildSteps; QList<BuildStep *> m_cleanSteps; - QStringList m_buildConfigurations; QMap<QString, QVariant> m_values; QList<BuildConfiguration *> m_buildConfigurationValues; QString m_activeBuildConfiguration;