diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp index 5b286003182..ea20cb580cd 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp @@ -35,6 +35,8 @@ #include "cmakeproject.h" #include "cmakeprojectconstants.h" #include "cmakebuildsettingswidget.h" +#include "cmakeprojectmanager.h" +#include "makestep.h" #include #include @@ -190,13 +192,14 @@ ProjectExplorer::BuildConfiguration *CMakeBuildConfigurationFactory::create(Proj CMakeBuildInfo copy(*static_cast(info)); CMakeProject *project = static_cast(parent->project()); + CMakeManager *manager = static_cast(project->projectManager()); if (copy.buildDirectory.isEmpty()) { copy.buildDirectory = shadowBuildDirectory(project->projectFilePath(), parent->kit(), copy.displayName); } - CMakeOpenProjectWizard copw(Core::ICore::mainWindow(), project->projectManager(), CMakeOpenProjectWizard::ChangeDirectory, ©); + CMakeOpenProjectWizard copw(Core::ICore::mainWindow(), manager, CMakeOpenProjectWizard::ChangeDirectory, ©); if (copw.exec() != QDialog::Accepted) return 0; diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h index 5a94993e7cc..cfe3f3968a5 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h @@ -38,9 +38,9 @@ namespace ProjectExplorer { class ToolChain; } namespace CMakeProjectManager { class CMakeBuildInfo; +class CMakeProject; namespace Internal { -class CMakeProject; class CMakeBuildConfigurationFactory; @@ -75,7 +75,7 @@ private: QString m_msvcVersion; bool m_useNinja; - friend class CMakeProject; + friend class CMakeProjectManager::CMakeProject; }; class CMakeBuildConfigurationFactory : public ProjectExplorer::IBuildConfigurationFactory diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsettingswidget.cpp b/src/plugins/cmakeprojectmanager/cmakebuildsettingswidget.cpp index 97ed67df8f0..596d12773ca 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsettingswidget.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildsettingswidget.cpp @@ -82,9 +82,10 @@ CMakeBuildSettingsWidget::CMakeBuildSettingsWidget(CMakeBuildConfiguration *bc) void CMakeBuildSettingsWidget::openChangeBuildDirectoryDialog() { CMakeProject *project = static_cast(m_buildConfiguration->target()->project()); + CMakeManager *manager = static_cast(project->projectManager()); CMakeBuildInfo info(m_buildConfiguration); CMakeOpenProjectWizard copw(Core::ICore::mainWindow(), - project->projectManager(), CMakeOpenProjectWizard::ChangeDirectory, + manager, CMakeOpenProjectWizard::ChangeDirectory, &info); if (copw.exec() == QDialog::Accepted) { project->changeBuildDirectory(m_buildConfiguration, copw.buildDirectory()); @@ -98,9 +99,10 @@ void CMakeBuildSettingsWidget::runCMake() if (!ProjectExplorer::ProjectExplorerPlugin::saveModifiedFiles()) return; CMakeProject *project = static_cast(m_buildConfiguration->target()->project()); + CMakeManager *manager = static_cast(project->projectManager()); CMakeBuildInfo info(m_buildConfiguration); CMakeOpenProjectWizard copw(Core::ICore::mainWindow(), - project->projectManager(), + manager, CMakeOpenProjectWizard::WantToUpdate, &info); if (copw.exec() == QDialog::Accepted) project->parseCMakeLists(); diff --git a/src/plugins/cmakeprojectmanager/cmakefile.h b/src/plugins/cmakeprojectmanager/cmakefile.h index a517fe7a6af..19d9099e5d0 100644 --- a/src/plugins/cmakeprojectmanager/cmakefile.h +++ b/src/plugins/cmakeprojectmanager/cmakefile.h @@ -34,9 +34,9 @@ #include namespace CMakeProjectManager { +class CMakeProject; namespace Internal { -class CMakeProject; class CMakeFile : public Core::IDocument { diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index 348ac9dfa08..8434d2bb52f 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -468,7 +468,7 @@ Core::IDocument *CMakeProject::document() const return m_file; } -CMakeManager *CMakeProject::projectManager() const +IProjectManager *CMakeProject::projectManager() const { return m_manager; } diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.h b/src/plugins/cmakeprojectmanager/cmakeproject.h index 5e2b98bb4ea..db58567df9b 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.h +++ b/src/plugins/cmakeprojectmanager/cmakeproject.h @@ -31,10 +31,8 @@ #ifndef CMAKEPROJECT_H #define CMAKEPROJECT_H -#include "cmakeprojectmanager.h" +#include "cmake_global.h" #include "cmakeprojectnodes.h" -#include "cmakebuildconfiguration.h" -#include "makestep.h" #include #include @@ -59,6 +57,10 @@ namespace CMakeProjectManager { namespace Internal { class CMakeFile; class CMakeBuildSettingsWidget; +class CMakeBuildConfiguration; +class CMakeProjectNode; +class CMakeManager; +} enum TargetType { ExecutableType = 0, @@ -66,7 +68,7 @@ enum TargetType { DynamicLibraryType = 3 }; -struct CMakeBuildTarget +struct CMAKE_EXPORT CMakeBuildTarget { QString title; QString executable; // TODO: rename to output? @@ -85,18 +87,18 @@ struct CMakeBuildTarget void clear(); }; -class CMakeProject : public ProjectExplorer::Project +class CMAKE_EXPORT CMakeProject : public ProjectExplorer::Project { Q_OBJECT // for changeBuildDirectory - friend class CMakeBuildSettingsWidget; + friend class Internal::CMakeBuildSettingsWidget; public: - CMakeProject(CMakeManager *manager, const Utils::FileName &filename); + CMakeProject(Internal::CMakeManager *manager, const Utils::FileName &filename); ~CMakeProject(); QString displayName() const; Core::IDocument *document() const; - CMakeManager *projectManager() const; + ProjectExplorer::IProjectManager *projectManager() const; ProjectExplorer::ProjectNode *rootProjectNode() const; @@ -120,7 +122,7 @@ protected: bool setupTarget(ProjectExplorer::Target *t); // called by CMakeBuildSettingsWidget - void changeBuildDirectory(CMakeBuildConfiguration *bc, const QString &newBuildDirectory); + void changeBuildDirectory(Internal::CMakeBuildConfiguration *bc, const QString &newBuildDirectory); private slots: void fileChanged(const QString &fileName); @@ -130,23 +132,23 @@ private slots: void updateRunConfigurations(); private: - void buildTree(CMakeProjectNode *rootNode, QList list); + void buildTree(Internal::CMakeProjectNode *rootNode, QList list); void gatherFileNodes(ProjectExplorer::FolderNode *parent, QList &list); - ProjectExplorer::FolderNode *findOrCreateFolder(CMakeProjectNode *rootNode, QString directory); + ProjectExplorer::FolderNode *findOrCreateFolder(Internal::CMakeProjectNode *rootNode, QString directory); void createUiCodeModelSupport(); QString uiHeaderFile(const QString &uiFile); void updateRunConfigurations(ProjectExplorer::Target *t); void updateApplicationAndDeploymentTargets(); QStringList getCXXFlagsFor(const CMakeBuildTarget &buildTarget); - CMakeManager *m_manager; + Internal::CMakeManager *m_manager; ProjectExplorer::Target *m_activeTarget; Utils::FileName m_fileName; - CMakeFile *m_file; + Internal::CMakeFile *m_file; QString m_projectName; // TODO probably need a CMake specific node structure - CMakeProjectNode *m_rootNode; + Internal::CMakeProjectNode *m_rootNode; QStringList m_files; QList m_buildTargets; QFileSystemWatcher *m_watcher; @@ -154,7 +156,6 @@ private: QFuture m_codeModelFuture; }; -} // namespace Internal } // namespace CMakeProjectManager #endif // CMAKEPROJECT_H diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectnodes.h b/src/plugins/cmakeprojectmanager/cmakeprojectnodes.h index 1a9ff6a6385..e21e660608d 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectnodes.h +++ b/src/plugins/cmakeprojectmanager/cmakeprojectnodes.h @@ -34,6 +34,8 @@ #include namespace CMakeProjectManager { +class CMakeProject; + namespace Internal { class CMakeProjectNode : public ProjectExplorer::ProjectNode