From 5350288e45d26b3e14ffb99d7f0b342fe5f2076a Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Fri, 17 Apr 2020 15:30:05 +0200 Subject: [PATCH] CMake: Fix includes all over the CMake plugin Keep internals internal, remove some unnecessary includes, add some that should have been there. This reduces the number of files that get rebuild when working on CMake internals from over 1000 to about 200. This patch also moves some code around that ended up being in the wrong file. Change-Id: Icd7366ac760dc85031040720418fbb16336dce9b Reviewed-by: Eike Ziller --- .../cmakeprojectmanager/builddirmanager.cpp | 11 +- .../cmakeprojectmanager/builddirmanager.h | 4 +- .../builddirparameters.cpp | 5 +- .../cmakeprojectmanager/builddirreader.h | 10 +- .../cmakeautocompleter.cpp | 7 -- .../cmakebuildconfiguration.cpp | 14 +-- .../cmakebuildconfiguration.h | 3 - .../cmakebuildsettingswidget.cpp | 18 +-- .../cmakebuildsettingswidget.h | 1 + .../cmakeprojectmanager/cmakebuildstep.cpp | 29 ++--- .../cmakeprojectmanager/cmakebuildsystem.cpp | 108 +++++++++++++++++- .../cmakeprojectmanager/cmakeconfigitem.cpp | 3 +- .../cmakeprojectmanager/cmakeconfigitem.h | 9 +- .../cmakeprojectmanager/cmakeeditor.cpp | 19 +-- src/plugins/cmakeprojectmanager/cmakeeditor.h | 1 - .../cmakefilecompletionassist.cpp | 10 +- .../cmakefilecompletionassist.h | 1 - .../cmakeprojectmanager/cmakeindenter.cpp | 6 - .../cmakekitinformation.cpp | 11 +- .../cmakelocatorfilter.cpp | 5 +- src/plugins/cmakeprojectmanager/cmakeparser.h | 2 + .../cmakeprojectmanager/cmakeprocess.cpp | 5 - .../cmakeprojectmanager/cmakeprocess.h | 2 + .../cmakeprojectmanager/cmakeproject.cpp | 39 ++----- .../cmakeprojectmanager/cmakeproject.h | 14 +-- .../cmakeprojectconstants.h | 2 - .../cmakeprojectimporter.cpp | 5 +- .../cmakeprojectmanager.cpp | 11 +- .../cmakeprojectmanager/cmakeprojectnodes.cpp | 106 +---------------- .../cmakeprojectplugin.cpp | 19 ++- .../cmakeprojectmanager/cmakeprojectplugin.h | 12 +- .../cmakeprojectmanager/cmakesettingspage.cpp | 16 ++- .../cmakespecificsettings.h | 2 + src/plugins/cmakeprojectmanager/cmaketool.cpp | 8 +- src/plugins/cmakeprojectmanager/cmaketool.h | 4 - .../cmakeprojectmanager/cmaketoolmanager.cpp | 4 +- .../cmakeprojectmanager/cmaketoolmanager.h | 9 +- .../cmaketoolsettingsaccessor.cpp | 2 +- .../cmaketoolsettingsaccessor.h | 4 - .../cmakeprojectmanager/configmodel.cpp | 1 - src/plugins/cmakeprojectmanager/configmodel.h | 3 +- .../configmodelitemdelegate.cpp | 4 +- .../configmodelitemdelegate.h | 4 +- .../fileapidataextractor.cpp | 4 +- .../fileapidataextractor.h | 11 +- .../cmakeprojectmanager/fileapiparser.cpp | 2 - .../cmakeprojectmanager/fileapiparser.h | 6 +- .../cmakeprojectmanager/fileapireader.cpp | 13 --- .../cmakeprojectmanager/fileapireader.h | 5 +- .../cmakeprojectmanager/projecttreehelper.h | 2 - .../cmakeprojectmanager/servermode.cpp | 7 -- src/plugins/cmakeprojectmanager/servermode.h | 6 +- .../cmakeprojectmanager/servermodereader.cpp | 13 +-- .../cmakeprojectmanager/servermodereader.h | 8 +- 54 files changed, 241 insertions(+), 389 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/builddirmanager.cpp b/src/plugins/cmakeprojectmanager/builddirmanager.cpp index e62aa14e78d..44aec2346e7 100644 --- a/src/plugins/cmakeprojectmanager/builddirmanager.cpp +++ b/src/plugins/cmakeprojectmanager/builddirmanager.cpp @@ -27,29 +27,20 @@ #include "cmakebuildconfiguration.h" #include "cmakebuildstep.h" -#include "cmakekitinformation.h" +#include "cmakebuildsystem.h" #include "cmakeprojectnodes.h" -#include "cmaketool.h" #include -#include -#include -#include #include -#include #include -#include #include -#include #include -#include #include #include #include #include -#include #include diff --git a/src/plugins/cmakeprojectmanager/builddirmanager.h b/src/plugins/cmakeprojectmanager/builddirmanager.h index c7652911d56..2815d5aec77 100644 --- a/src/plugins/cmakeprojectmanager/builddirmanager.h +++ b/src/plugins/cmakeprojectmanager/builddirmanager.h @@ -28,7 +28,6 @@ #include "builddirparameters.h" #include "builddirreader.h" #include "cmakebuildtarget.h" -#include "cmakeconfigitem.h" #include @@ -36,9 +35,8 @@ #include #include -#include +#include -#include #include #include diff --git a/src/plugins/cmakeprojectmanager/builddirparameters.cpp b/src/plugins/cmakeprojectmanager/builddirparameters.cpp index 7cc9fc3e445..8522029e679 100644 --- a/src/plugins/cmakeprojectmanager/builddirparameters.cpp +++ b/src/plugins/cmakeprojectmanager/builddirparameters.cpp @@ -31,12 +31,11 @@ #include "cmakespecificsettings.h" #include "cmaketoolmanager.h" -#include #include -#include +#include #include +#include -#include #include using namespace ProjectExplorer; diff --git a/src/plugins/cmakeprojectmanager/builddirreader.h b/src/plugins/cmakeprojectmanager/builddirreader.h index 73f716afeca..7448fca09a5 100644 --- a/src/plugins/cmakeprojectmanager/builddirreader.h +++ b/src/plugins/cmakeprojectmanager/builddirreader.h @@ -27,18 +27,12 @@ #include "builddirparameters.h" #include "cmakebuildtarget.h" -#include "cmakeconfigitem.h" -#include "cmaketool.h" #include -#include -#include -#include - -#include #include -#include + +#include namespace ProjectExplorer { class FileNode; } diff --git a/src/plugins/cmakeprojectmanager/cmakeautocompleter.cpp b/src/plugins/cmakeprojectmanager/cmakeautocompleter.cpp index eb9ae0c76f8..b0b145e7fd5 100644 --- a/src/plugins/cmakeprojectmanager/cmakeautocompleter.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeautocompleter.cpp @@ -25,13 +25,6 @@ #include "cmakeautocompleter.h" -#include -#include -#include -#include - -#include - namespace CMakeProjectManager { namespace Internal { diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp index eba95e58ebd..fef15a3a3e2 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp @@ -26,34 +26,26 @@ #include "cmakebuildconfiguration.h" #include "builddirmanager.h" +#include "cmakebuildsettingswidget.h" #include "cmakebuildstep.h" -#include "cmakeconfigitem.h" +#include "cmakebuildsystem.h" #include "cmakekitinformation.h" #include "cmakeprojectconstants.h" -#include "cmakebuildsettingswidget.h" #include - -#include - #include #include #include -#include #include +#include #include -#include #include #include - #include #include #include -#include -#include #include -#include #include diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h index a1e70b0229a..ee34640e913 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h +++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.h @@ -26,12 +26,9 @@ #pragma once #include "cmakeconfigitem.h" -#include "cmakeproject.h" #include "configmodel.h" #include -#include -#include namespace CMakeProjectManager { class CMakeProject; diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsettingswidget.cpp b/src/plugins/cmakeprojectmanager/cmakebuildsettingswidget.cpp index 21e77cc5ea5..c1b4d038c8d 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsettingswidget.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildsettingswidget.cpp @@ -25,40 +25,30 @@ #include "cmakebuildsettingswidget.h" +#include "cmakebuildconfiguration.h" +#include "cmakebuildsystem.h" +#include "cmakekitinformation.h" #include "configmodel.h" #include "configmodelitemdelegate.h" -#include "cmakekitinformation.h" -#include "cmakeproject.h" -#include "cmakebuildconfiguration.h" #include -#include #include -#include #include -#include #include #include #include #include -#include #include #include #include -#include #include +#include #include #include -#include -#include #include -#include #include -#include -#include -#include #include using namespace ProjectExplorer; diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsettingswidget.h b/src/plugins/cmakeprojectmanager/cmakebuildsettingswidget.h index ca68fe56328..1014d2f6747 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsettingswidget.h +++ b/src/plugins/cmakeprojectmanager/cmakebuildsettingswidget.h @@ -55,6 +55,7 @@ class CMakeBuildConfiguration; class CMakeBuildSettingsWidget : public ProjectExplorer::NamedWidget { Q_OBJECT + public: CMakeBuildSettingsWidget(CMakeBuildConfiguration *bc); diff --git a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp index bf1c269cc5a..0ece524c19f 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp @@ -30,32 +30,19 @@ #include "cmakekitinformation.h" #include "cmakeparser.h" #include "cmakeprojectconstants.h" -#include "cmakeproject.h" #include "cmaketool.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - #include +#include +#include +#include +#include +#include +#include +#include -#include -#include -#include - -#include -#include +#include #include -#include #include #include #include diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp index a647c405f78..b0d962d72cb 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp @@ -27,33 +27,105 @@ #include "cmakebuildconfiguration.h" #include "cmakekitinformation.h" -#include "cmakeproject.h" #include "cmakeprojectconstants.h" #include "cmakeprojectnodes.h" +#include "cmakeprojectplugin.h" +#include "cmakespecificsettings.h" #include - +#include #include #include +#include #include -#include -#include +#include #include #include #include #include -#include +#include #include #include #include +#include +#include +#include #include using namespace ProjectExplorer; using namespace Utils; +namespace { + +void copySourcePathToClipboard(Utils::optional srcPath, + const ProjectExplorer::ProjectNode *node) +{ + QClipboard *clip = QGuiApplication::clipboard(); + + QDir projDir{node->filePath().toFileInfo().absoluteFilePath()}; + clip->setText(QDir::cleanPath(projDir.relativeFilePath(srcPath.value()))); +} + +void noAutoAdditionNotify(const QStringList &filePaths, const ProjectExplorer::ProjectNode *node) +{ + Utils::optional srcPath{}; + + for (const QString &file : filePaths) { + if (Utils::mimeTypeForFile(file).name() == CppTools::Constants::CPP_SOURCE_MIMETYPE) { + srcPath = file; + break; + } + } + + if (srcPath) { + CMakeProjectManager::Internal::CMakeSpecificSettings *settings + = CMakeProjectManager::Internal::CMakeProjectPlugin::projectTypeSpecificSettings(); + switch (settings->afterAddFileSetting()) { + case CMakeProjectManager::Internal::ASK_USER: { + bool checkValue{false}; + QDialogButtonBox::StandardButton reply = Utils::CheckableMessageBox::question( + nullptr, + QMessageBox::tr("Copy to Clipboard?"), + QMessageBox::tr("Files are not automatically added to the " + "CMakeLists.txt file of the CMake project." + "\nCopy the path to the source files to the clipboard?"), + "Remember My Choice", + &checkValue, + QDialogButtonBox::Yes | QDialogButtonBox::No, + QDialogButtonBox::Yes); + if (checkValue) { + if (QDialogButtonBox::Yes == reply) + settings->setAfterAddFileSetting( + CMakeProjectManager::Internal::AfterAddFileAction::COPY_FILE_PATH); + else if (QDialogButtonBox::No == reply) + settings->setAfterAddFileSetting( + CMakeProjectManager::Internal::AfterAddFileAction::NEVER_COPY_FILE_PATH); + + settings->toSettings(Core::ICore::settings()); + } + + if (QDialogButtonBox::Yes == reply) { + copySourcePathToClipboard(srcPath, node); + } + break; + } + + case CMakeProjectManager::Internal::COPY_FILE_PATH: { + copySourcePathToClipboard(srcPath, node); + break; + } + + case CMakeProjectManager::Internal::NEVER_COPY_FILE_PATH: + break; + } + } +} + +} // namespace + namespace CMakeProjectManager { namespace Internal { @@ -264,6 +336,32 @@ void CMakeBuildSystem::triggerParsing() m_buildDirManager.parse(); } +bool CMakeBuildSystem::supportsAction(Node *context, ProjectAction action, const Node *node) const +{ + if (dynamic_cast(context)) + return action == ProjectAction::AddNewFile; + + if (dynamic_cast(context)) + return action == ProjectAction::AddNewFile; + + return BuildSystem::supportsAction(context, action, node); +} + +bool CMakeBuildSystem::addFiles(Node *context, const QStringList &filePaths, QStringList *notAdded) +{ + if (auto n = dynamic_cast(context)) { + noAutoAdditionNotify(filePaths, n); + return true; // Return always true as autoadd is not supported! + } + + if (auto n = dynamic_cast(context)) { + noAutoAdditionNotify(filePaths, n); + return true; // Return always true as autoadd is not supported! + } + + return BuildSystem::addFiles(context, filePaths, notAdded); +} + QStringList CMakeBuildSystem::filesGeneratedFrom(const QString &sourceFile) const { QFileInfo fi(sourceFile); diff --git a/src/plugins/cmakeprojectmanager/cmakeconfigitem.cpp b/src/plugins/cmakeprojectmanager/cmakeconfigitem.cpp index 7fdb7b2d60a..a57d780d453 100644 --- a/src/plugins/cmakeprojectmanager/cmakeconfigitem.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeconfigitem.cpp @@ -32,7 +32,8 @@ #include #include -#include +#include +#include namespace CMakeProjectManager { diff --git a/src/plugins/cmakeprojectmanager/cmakeconfigitem.h b/src/plugins/cmakeprojectmanager/cmakeconfigitem.h index 15dae12a9c0..c99f1e64f7e 100644 --- a/src/plugins/cmakeprojectmanager/cmakeconfigitem.h +++ b/src/plugins/cmakeprojectmanager/cmakeconfigitem.h @@ -30,16 +30,17 @@ #include #include -#include +#include -#include - -namespace ProjectExplorer { class Kit; } namespace Utils { class FilePath; class MacroExpander; } // namespace Utils +namespace ProjectExplorer { +class Kit; +} + namespace CMakeProjectManager { class CMAKE_EXPORT CMakeConfigItem { diff --git a/src/plugins/cmakeprojectmanager/cmakeeditor.cpp b/src/plugins/cmakeprojectmanager/cmakeeditor.cpp index a3aef760e54..6948eedf00f 100644 --- a/src/plugins/cmakeprojectmanager/cmakeeditor.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeeditor.cpp @@ -27,31 +27,20 @@ #include "cmakefilecompletionassist.h" #include "cmakeprojectconstants.h" -#include "cmakeproject.h" #include "cmakeindenter.h" #include "cmakeautocompleter.h" #include #include -#include -#include - -#include - -#include -#include - +#include #include -#include -#include -#include +#include +#include -#include -#include +#include using namespace Core; -using namespace ProjectExplorer; using namespace TextEditor; namespace CMakeProjectManager { diff --git a/src/plugins/cmakeprojectmanager/cmakeeditor.h b/src/plugins/cmakeprojectmanager/cmakeeditor.h index 2eab78ed83d..a2f67bef40d 100644 --- a/src/plugins/cmakeprojectmanager/cmakeeditor.h +++ b/src/plugins/cmakeprojectmanager/cmakeeditor.h @@ -25,7 +25,6 @@ #pragma once -#include #include namespace CMakeProjectManager { diff --git a/src/plugins/cmakeprojectmanager/cmakefilecompletionassist.cpp b/src/plugins/cmakeprojectmanager/cmakefilecompletionassist.cpp index 07f350caf19..16489020169 100644 --- a/src/plugins/cmakeprojectmanager/cmakefilecompletionassist.cpp +++ b/src/plugins/cmakeprojectmanager/cmakefilecompletionassist.cpp @@ -24,19 +24,17 @@ ****************************************************************************/ #include "cmakefilecompletionassist.h" -#include "cmakeprojectconstants.h" -#include "cmakeprojectmanager.h" -#include "cmakesettingspage.h" -#include "cmaketoolmanager.h" + #include "cmakekitinformation.h" +#include "cmakeprojectconstants.h" +#include "cmaketool.h" #include -#include #include #include #include -#include +#include using namespace CMakeProjectManager::Internal; using namespace TextEditor; diff --git a/src/plugins/cmakeprojectmanager/cmakefilecompletionassist.h b/src/plugins/cmakeprojectmanager/cmakefilecompletionassist.h index 220ed6ce268..440bbcb6c0f 100644 --- a/src/plugins/cmakeprojectmanager/cmakefilecompletionassist.h +++ b/src/plugins/cmakeprojectmanager/cmakefilecompletionassist.h @@ -25,7 +25,6 @@ #pragma once -#include #include namespace CMakeProjectManager { diff --git a/src/plugins/cmakeprojectmanager/cmakeindenter.cpp b/src/plugins/cmakeprojectmanager/cmakeindenter.cpp index e281d532dbb..4d0503482ae 100644 --- a/src/plugins/cmakeprojectmanager/cmakeindenter.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeindenter.cpp @@ -25,12 +25,6 @@ #include "cmakeindenter.h" -#include -#include - -#include -#include - namespace CMakeProjectManager { namespace Internal { diff --git a/src/plugins/cmakeprojectmanager/cmakekitinformation.cpp b/src/plugins/cmakeprojectmanager/cmakekitinformation.cpp index bf658479b3a..d875cbe7e2c 100644 --- a/src/plugins/cmakeprojectmanager/cmakekitinformation.cpp +++ b/src/plugins/cmakeprojectmanager/cmakekitinformation.cpp @@ -24,38 +24,37 @@ ****************************************************************************/ #include "cmakekitinformation.h" + #include "cmakeprojectconstants.h" #include "cmakeprojectplugin.h" #include "cmakespecificsettings.h" #include "cmaketool.h" #include "cmaketoolmanager.h" -#include #include #include -#include #include -#include #include #include #include #include + +#include + #include #include #include +#include #include #include #include #include -#include #include -#include #include #include #include #include -#include using namespace ProjectExplorer; diff --git a/src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp b/src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp index a0a195ced60..290cabb868c 100644 --- a/src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp +++ b/src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp @@ -24,15 +24,14 @@ ****************************************************************************/ #include "cmakelocatorfilter.h" -#include "cmakebuildconfiguration.h" + #include "cmakebuildstep.h" +#include "cmakebuildsystem.h" #include "cmakeproject.h" #include -#include #include #include -#include #include #include diff --git a/src/plugins/cmakeprojectmanager/cmakeparser.h b/src/plugins/cmakeprojectmanager/cmakeparser.h index b4667924c46..dfcf6d0c1b0 100644 --- a/src/plugins/cmakeprojectmanager/cmakeparser.h +++ b/src/plugins/cmakeprojectmanager/cmakeparser.h @@ -30,6 +30,8 @@ #include #include +#include + #include #include #include diff --git a/src/plugins/cmakeprojectmanager/cmakeprocess.cpp b/src/plugins/cmakeprojectmanager/cmakeprocess.cpp index c3fadbfe4ec..0e6d7a52ffb 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprocess.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprocess.cpp @@ -33,14 +33,9 @@ #include #include -#include -#include #include #include -#include -#include -#include namespace CMakeProjectManager { namespace Internal { diff --git a/src/plugins/cmakeprojectmanager/cmakeprocess.h b/src/plugins/cmakeprojectmanager/cmakeprocess.h index 3c2bf70ee03..ed68f9f96c0 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprocess.h +++ b/src/plugins/cmakeprojectmanager/cmakeprocess.h @@ -33,6 +33,8 @@ #include #include +#include +#include #include #include diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index 54dc9802687..381f25e37bd 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -25,41 +25,19 @@ #include "cmakeproject.h" -#include "cmakebuildconfiguration.h" #include "cmakebuildstep.h" #include "cmakekitinformation.h" #include "cmakeprojectconstants.h" +#include "cmakeprojectimporter.h" #include "cmakeprojectnodes.h" -#include "cmakeprojectmanager.h" +#include "cmaketool.h" -#include -#include -#include -#include -#include +#include +#include #include -#include -#include -#include #include -#include #include #include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include -#include -#include using namespace ProjectExplorer; using namespace Utils; @@ -87,7 +65,10 @@ CMakeProject::CMakeProject(const FilePath &fileName) setHasMakeInstallEquivalent(true); } -CMakeProject::~CMakeProject() = default; +CMakeProject::~CMakeProject() +{ + delete m_projectImporter; +} Tasks CMakeProject::projectIssues(const Kit *k) const { @@ -105,8 +86,8 @@ Tasks CMakeProject::projectIssues(const Kit *k) const ProjectImporter *CMakeProject::projectImporter() const { if (!m_projectImporter) - m_projectImporter = std::make_unique(projectFilePath()); - return m_projectImporter.get(); + m_projectImporter = new CMakeProjectImporter(projectFilePath()); + return m_projectImporter; } bool CMakeProject::setupTarget(Target *t) diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.h b/src/plugins/cmakeprojectmanager/cmakeproject.h index 9266854a682..c96242b674a 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.h +++ b/src/plugins/cmakeprojectmanager/cmakeproject.h @@ -27,18 +27,14 @@ #include "cmake_global.h" -#include "builddirmanager.h" -#include "cmakebuildsystem.h" -#include "cmakebuildtarget.h" -#include "cmakeprojectimporter.h" - -#include #include -#include - namespace CMakeProjectManager { +namespace Internal { +class CMakeProjectImporter; +} + class CMAKE_EXPORT CMakeProject final : public ProjectExplorer::Project { Q_OBJECT @@ -59,7 +55,7 @@ private: ProjectExplorer::MakeInstallCommand makeInstallCommand(const ProjectExplorer::Target *target, const QString &installRoot) override; - mutable std::unique_ptr m_projectImporter; + mutable Internal::CMakeProjectImporter *m_projectImporter = nullptr; friend class CMakeBuildSystem; }; diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectconstants.h b/src/plugins/cmakeprojectmanager/cmakeprojectconstants.h index 9938e0e194f..a59ac48c09d 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectconstants.h +++ b/src/plugins/cmakeprojectmanager/cmakeprojectconstants.h @@ -25,8 +25,6 @@ #pragma once -#include - namespace CMakeProjectManager { namespace Constants { diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp index ddfd3fd8f7c..f2d7ba55adc 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp @@ -31,8 +31,7 @@ #include "cmaketoolmanager.h" #include -#include -#include +#include #include #include @@ -40,9 +39,7 @@ #include #include -#include #include -#include #include using namespace ProjectExplorer; diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp index 0986554546d..69a8f0adf66 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectmanager.cpp @@ -24,20 +24,17 @@ ****************************************************************************/ #include "cmakeprojectmanager.h" -#include "cmakebuildconfiguration.h" + +#include "cmakebuildsystem.h" #include "cmakekitinformation.h" -#include "cmakeprojectconstants.h" #include "cmakeproject.h" -#include "cmakesettingspage.h" -#include "cmaketoolmanager.h" +#include "cmakeprojectconstants.h" #include "cmakeprojectnodes.h" #include #include -#include #include #include -#include #include #include #include @@ -49,8 +46,6 @@ #include #include -#include -#include using namespace ProjectExplorer; using namespace CMakeProjectManager::Internal; diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectnodes.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectnodes.cpp index fbb5f8deeea..6f130f2b1a6 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectnodes.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectnodes.cpp @@ -25,98 +25,20 @@ #include "cmakeprojectnodes.h" -#include "cmakeconfigitem.h" -#include "cmakeproject.h" +#include "cmakebuildsystem.h" #include "cmakeprojectconstants.h" -#include "cmakeprojectplugin.h" -#include "cmakespecificsettings.h" #include - #include -#include -#include - #include -#include -#include -#include -#include #include -#include -#include -#include -#include - using namespace ProjectExplorer; namespace CMakeProjectManager { namespace Internal { -namespace { -void copySourcePathToClipboard(Utils::optional srcPath, - const ProjectExplorer::ProjectNode *node) -{ - QClipboard *clip = QGuiApplication::clipboard(); - - QDir projDir{node->filePath().toFileInfo().absoluteFilePath()}; - clip->setText(QDir::cleanPath(projDir.relativeFilePath(srcPath.value()))); -} - -void noAutoAdditionNotify(const QStringList &filePaths, const ProjectExplorer::ProjectNode *node) -{ - Utils::optional srcPath{}; - - for (const QString &file : filePaths) { - if (Utils::mimeTypeForFile(file).name() == CppTools::Constants::CPP_SOURCE_MIMETYPE) { - srcPath = file; - break; - } - } - - if (srcPath) { - CMakeSpecificSettings *settings = CMakeProjectPlugin::projectTypeSpecificSettings(); - switch (settings->afterAddFileSetting()) { - case CMakeProjectManager::Internal::ASK_USER: { - bool checkValue{false}; - QDialogButtonBox::StandardButton reply = - Utils::CheckableMessageBox::question(nullptr, - QMessageBox::tr("Copy to Clipboard?"), - QMessageBox::tr("Files are not automatically added to the " - "CMakeLists.txt file of the CMake project." - "\nCopy the path to the source files to the clipboard?"), - "Remember My Choice", &checkValue, QDialogButtonBox::Yes | QDialogButtonBox::No, - QDialogButtonBox::Yes); - if (checkValue) { - if (QDialogButtonBox::Yes == reply) - settings->setAfterAddFileSetting(AfterAddFileAction::COPY_FILE_PATH); - else if (QDialogButtonBox::No == reply) - settings->setAfterAddFileSetting(AfterAddFileAction::NEVER_COPY_FILE_PATH); - - settings->toSettings(Core::ICore::settings()); - } - - if (QDialogButtonBox::Yes == reply) { - copySourcePathToClipboard(srcPath, node); - } - break; - } - - case CMakeProjectManager::Internal::COPY_FILE_PATH: { - copySourcePathToClipboard(srcPath, node); - break; - } - - case CMakeProjectManager::Internal::NEVER_COPY_FILE_PATH: - break; - } - } -} - -} - CMakeInputsNode::CMakeInputsNode(const Utils::FilePath &cmakeLists) : ProjectExplorer::ProjectNode(cmakeLists) { @@ -157,21 +79,6 @@ QString CMakeProjectNode::tooltip() const return QString(); } -bool CMakeBuildSystem::addFiles(Node *context, const QStringList &filePaths, QStringList *notAdded) -{ - if (auto n = dynamic_cast(context)) { - noAutoAdditionNotify(filePaths, n); - return true; // Return always true as autoadd is not supported! - } - - if (auto n = dynamic_cast(context)) { - noAutoAdditionNotify(filePaths, n); - return true; // Return always true as autoadd is not supported! - } - - return BuildSystem::addFiles(context, filePaths, notAdded); -} - CMakeTargetNode::CMakeTargetNode(const Utils::FilePath &directory, const QString &target) : ProjectExplorer::ProjectNode(directory) { @@ -248,17 +155,6 @@ void CMakeTargetNode::setConfig(const CMakeConfig &config) m_config = config; } -bool CMakeBuildSystem::supportsAction(Node *context, ProjectAction action, const Node *node) const -{ - if (dynamic_cast(context)) - return action == ProjectAction::AddNewFile; - - if (dynamic_cast(context)) - return action == ProjectAction::AddNewFile; - - return BuildSystem::supportsAction(context, action, node); -} - Utils::optional CMakeTargetNode::visibleAfterAddFileAction() const { return filePath().pathAppended("CMakeLists.txt"); diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp index f4f5dc5cd22..1dae39f0362 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp @@ -25,31 +25,28 @@ #include "cmakeprojectplugin.h" -#include "cmakeeditor.h" +#include "cmakebuildconfiguration.h" #include "cmakebuildstep.h" +#include "cmakebuildsystem.h" +#include "cmakeeditor.h" +#include "cmakekitinformation.h" +#include "cmakelocatorfilter.h" #include "cmakeproject.h" #include "cmakeprojectconstants.h" #include "cmakeprojectmanager.h" #include "cmakeprojectnodes.h" -#include "cmakebuildconfiguration.h" -#include "cmakeprojectconstants.h" -#include "cmakelocatorfilter.h" #include "cmakesettingspage.h" -#include "cmaketoolmanager.h" -#include "cmakekitinformation.h" #include "cmakespecificsettings.h" +#include "cmakespecificsettingspage.h" +#include "cmaketoolmanager.h" #include #include #include #include - -#include +#include #include #include -#include -#include - #include #include diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectplugin.h b/src/plugins/cmakeprojectmanager/cmakeprojectplugin.h index c8a50219f41..84c13c3bd99 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectplugin.h +++ b/src/plugins/cmakeprojectmanager/cmakeprojectplugin.h @@ -25,21 +25,21 @@ #pragma once -#include "cmakespecificsettingspage.h" - #include namespace CMakeProjectManager { namespace Internal { -class CMakeProjectPlugin : public ExtensionSystem::IPlugin +class CMakeSpecificSettings; + +class CMakeProjectPlugin final : public ExtensionSystem::IPlugin { Q_OBJECT Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "CMakeProjectManager.json") public: static CMakeSpecificSettings *projectTypeSpecificSettings(); - ~CMakeProjectPlugin() override; + ~CMakeProjectPlugin(); #ifdef WITH_TESTS private slots: @@ -60,8 +60,8 @@ private slots: #endif private: - bool initialize(const QStringList &arguments, QString *errorMessage) override; - void extensionsInitialized() override; + bool initialize(const QStringList &arguments, QString *errorMessage); + void extensionsInitialized(); void updateContextActions(); diff --git a/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp b/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp index 4c7819dd6bc..98ad0b9c4f4 100644 --- a/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp +++ b/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp @@ -23,31 +23,35 @@ ** ****************************************************************************/ -#include "cmakeprojectconstants.h" #include "cmakesettingspage.h" + +#include "cmakeprojectconstants.h" +#include "cmaketool.h" #include "cmaketoolmanager.h" -#include +#include #include -#include + #include -#include +#include #include #include #include #include #include +#include #include +#include #include #include #include #include #include #include +#include #include #include -#include using namespace Utils; @@ -121,7 +125,7 @@ public: } CMakeToolTreeItem(const QString &name, - const Utils::FilePath &executable, + const FilePath &executable, const FilePath &qchFile, bool autoRun, bool autoCreate, diff --git a/src/plugins/cmakeprojectmanager/cmakespecificsettings.h b/src/plugins/cmakeprojectmanager/cmakespecificsettings.h index ca94bc2c73b..4a4c51b461a 100644 --- a/src/plugins/cmakeprojectmanager/cmakespecificsettings.h +++ b/src/plugins/cmakeprojectmanager/cmakespecificsettings.h @@ -24,7 +24,9 @@ ****************************************************************************/ #pragma once + #include + #include namespace CMakeProjectManager { diff --git a/src/plugins/cmakeprojectmanager/cmaketool.cpp b/src/plugins/cmakeprojectmanager/cmaketool.cpp index c602543681f..81010f7e1e7 100644 --- a/src/plugins/cmakeprojectmanager/cmaketool.cpp +++ b/src/plugins/cmakeprojectmanager/cmaketool.cpp @@ -24,23 +24,21 @@ ****************************************************************************/ #include "cmaketool.h" + #include "cmaketoolmanager.h" #include #include -#include #include #include -#include #include #include -#include #include #include -#include #include -#include + +#include namespace CMakeProjectManager { diff --git a/src/plugins/cmakeprojectmanager/cmaketool.h b/src/plugins/cmakeprojectmanager/cmaketool.h index 8c88ec40d4f..40a79071cff 100644 --- a/src/plugins/cmakeprojectmanager/cmaketool.h +++ b/src/plugins/cmakeprojectmanager/cmaketool.h @@ -34,10 +34,6 @@ #include #include -#include -#include -#include - QT_FORWARD_DECLARE_CLASS(QProcess) namespace ProjectExplorer { class Kit; } diff --git a/src/plugins/cmakeprojectmanager/cmaketoolmanager.cpp b/src/plugins/cmakeprojectmanager/cmaketoolmanager.cpp index fd7af452c76..aeb33ba7545 100644 --- a/src/plugins/cmakeprojectmanager/cmaketoolmanager.cpp +++ b/src/plugins/cmakeprojectmanager/cmaketoolmanager.cpp @@ -34,8 +34,6 @@ #include using namespace Core; -using namespace Utils; -using namespace ProjectExplorer; namespace CMakeProjectManager { @@ -139,7 +137,7 @@ void CMakeToolManager::setDefaultCMakeTool(const Id &id) ensureDefaultCMakeToolIsValid(); } -CMakeTool *CMakeToolManager::findByCommand(const FilePath &command) +CMakeTool *CMakeToolManager::findByCommand(const Utils::FilePath &command) { return Utils::findOrDefault(d->m_cmakeTools, Utils::equal(&CMakeTool::cmakeExecutable, command)); } diff --git a/src/plugins/cmakeprojectmanager/cmaketoolmanager.h b/src/plugins/cmakeprojectmanager/cmaketoolmanager.h index c91f6498501..7b3e3c4aa02 100644 --- a/src/plugins/cmakeprojectmanager/cmaketoolmanager.h +++ b/src/plugins/cmakeprojectmanager/cmaketoolmanager.h @@ -26,14 +26,17 @@ #pragma once #include "cmake_global.h" + #include "cmaketool.h" +#include + #include -#include -#include #include +#include + namespace CMakeProjectManager { class CMAKE_EXPORT CMakeToolManager : public QObject @@ -41,7 +44,7 @@ class CMAKE_EXPORT CMakeToolManager : public QObject Q_OBJECT public: CMakeToolManager(); - ~CMakeToolManager() override; + ~CMakeToolManager(); static CMakeToolManager *instance(); diff --git a/src/plugins/cmakeprojectmanager/cmaketoolsettingsaccessor.cpp b/src/plugins/cmakeprojectmanager/cmaketoolsettingsaccessor.cpp index 7e7b311f72c..4d90eb80993 100644 --- a/src/plugins/cmakeprojectmanager/cmaketoolsettingsaccessor.cpp +++ b/src/plugins/cmakeprojectmanager/cmaketoolsettingsaccessor.cpp @@ -31,9 +31,9 @@ #include #include +#include #include -#include #include #include diff --git a/src/plugins/cmakeprojectmanager/cmaketoolsettingsaccessor.h b/src/plugins/cmakeprojectmanager/cmaketoolsettingsaccessor.h index 05c7ac69207..0e85b43dfcc 100644 --- a/src/plugins/cmakeprojectmanager/cmaketoolsettingsaccessor.h +++ b/src/plugins/cmakeprojectmanager/cmaketoolsettingsaccessor.h @@ -29,10 +29,6 @@ #include -#include - -#include - namespace Core { class Id; } namespace CMakeProjectManager { diff --git a/src/plugins/cmakeprojectmanager/configmodel.cpp b/src/plugins/cmakeprojectmanager/configmodel.cpp index c402478d3c4..b6134b14fa0 100644 --- a/src/plugins/cmakeprojectmanager/configmodel.cpp +++ b/src/plugins/cmakeprojectmanager/configmodel.cpp @@ -31,7 +31,6 @@ #include #include -#include #include namespace CMakeProjectManager { diff --git a/src/plugins/cmakeprojectmanager/configmodel.h b/src/plugins/cmakeprojectmanager/configmodel.h index 3b0c8ffa6d4..5844c388f96 100644 --- a/src/plugins/cmakeprojectmanager/configmodel.h +++ b/src/plugins/cmakeprojectmanager/configmodel.h @@ -27,9 +27,10 @@ #include "cmakeconfigitem.h" -#include #include +#include + namespace CMakeProjectManager { namespace Internal { class ConfigModelTreeItem; } diff --git a/src/plugins/cmakeprojectmanager/configmodelitemdelegate.cpp b/src/plugins/cmakeprojectmanager/configmodelitemdelegate.cpp index a4a6320d1c9..d111ac0b6a9 100644 --- a/src/plugins/cmakeprojectmanager/configmodelitemdelegate.cpp +++ b/src/plugins/cmakeprojectmanager/configmodelitemdelegate.cpp @@ -25,14 +25,12 @@ ****************************************************************************/ #include "configmodelitemdelegate.h" + #include "configmodel.h" #include -#include #include -#include -#include namespace CMakeProjectManager { diff --git a/src/plugins/cmakeprojectmanager/configmodelitemdelegate.h b/src/plugins/cmakeprojectmanager/configmodelitemdelegate.h index 5df8decd113..d2ccf2c3d9f 100644 --- a/src/plugins/cmakeprojectmanager/configmodelitemdelegate.h +++ b/src/plugins/cmakeprojectmanager/configmodelitemdelegate.h @@ -26,11 +26,11 @@ #pragma once +#include + #include #include -#include - namespace CMakeProjectManager { class ConfigModelItemDelegate : public QStyledItemDelegate diff --git a/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp b/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp index 0a6aac06db1..02800c494a5 100644 --- a/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp +++ b/src/plugins/cmakeprojectmanager/fileapidataextractor.cpp @@ -25,11 +25,9 @@ #include "fileapidataextractor.h" -#include "cmakeprojectnodes.h" +#include "fileapiparser.h" #include "projecttreehelper.h" -#include - #include #include #include diff --git a/src/plugins/cmakeprojectmanager/fileapidataextractor.h b/src/plugins/cmakeprojectmanager/fileapidataextractor.h index 403e041a622..f89da90296c 100644 --- a/src/plugins/cmakeprojectmanager/fileapidataextractor.h +++ b/src/plugins/cmakeprojectmanager/fileapidataextractor.h @@ -25,19 +25,24 @@ #pragma once -#include "fileapiparser.h" - #include "cmakebuildtarget.h" -#include "cmakeprocess.h" #include "cmakeprojectnodes.h" #include +#include + +#include +#include +#include + #include namespace CMakeProjectManager { namespace Internal { +class FileApiData; + class FileApiQtcData { public: diff --git a/src/plugins/cmakeprojectmanager/fileapiparser.cpp b/src/plugins/cmakeprojectmanager/fileapiparser.cpp index f1eb1e8aaac..7c33eedfd62 100644 --- a/src/plugins/cmakeprojectmanager/fileapiparser.cpp +++ b/src/plugins/cmakeprojectmanager/fileapiparser.cpp @@ -26,13 +26,11 @@ #include "fileapiparser.h" #include -#include #include #include #include -#include #include #include #include diff --git a/src/plugins/cmakeprojectmanager/fileapiparser.h b/src/plugins/cmakeprojectmanager/fileapiparser.h index 0a5d19649ee..98fc552b2a7 100644 --- a/src/plugins/cmakeprojectmanager/fileapiparser.h +++ b/src/plugins/cmakeprojectmanager/fileapiparser.h @@ -33,7 +33,11 @@ #include #include -#include +#include +#include +#include + +#include namespace CMakeProjectManager { namespace Internal { diff --git a/src/plugins/cmakeprojectmanager/fileapireader.cpp b/src/plugins/cmakeprojectmanager/fileapireader.cpp index 665d690859f..9ea5690cbff 100644 --- a/src/plugins/cmakeprojectmanager/fileapireader.cpp +++ b/src/plugins/cmakeprojectmanager/fileapireader.cpp @@ -25,25 +25,12 @@ #include "fileapireader.h" -#include "cmakebuildconfiguration.h" -#include "cmakeprojectconstants.h" -#include "cmakeprojectmanager.h" #include "fileapidataextractor.h" #include "projecttreehelper.h" -#include -#include -#include -#include #include -#include -#include -#include -#include #include -#include -#include #include #include diff --git a/src/plugins/cmakeprojectmanager/fileapireader.h b/src/plugins/cmakeprojectmanager/fileapireader.h index 560aafc779a..2be34a7c2c6 100644 --- a/src/plugins/cmakeprojectmanager/fileapireader.h +++ b/src/plugins/cmakeprojectmanager/fileapireader.h @@ -27,15 +27,14 @@ #include "builddirreader.h" #include "fileapiparser.h" - #include "cmakeprocess.h" #include -#include - #include +#include + namespace ProjectExplorer { class ProjectNode; } diff --git a/src/plugins/cmakeprojectmanager/projecttreehelper.h b/src/plugins/cmakeprojectmanager/projecttreehelper.h index 1371330f702..a591cabf0e1 100644 --- a/src/plugins/cmakeprojectmanager/projecttreehelper.h +++ b/src/plugins/cmakeprojectmanager/projecttreehelper.h @@ -25,8 +25,6 @@ #include "cmakeprojectnodes.h" -#include - #include #include diff --git a/src/plugins/cmakeprojectmanager/servermode.cpp b/src/plugins/cmakeprojectmanager/servermode.cpp index bfd52f793b9..1faa6eb012d 100644 --- a/src/plugins/cmakeprojectmanager/servermode.cpp +++ b/src/plugins/cmakeprojectmanager/servermode.cpp @@ -25,17 +25,10 @@ #include "servermode.h" -#include #include -#include #include -#include -#include -#include -#include -#include #include #include #include diff --git a/src/plugins/cmakeprojectmanager/servermode.h b/src/plugins/cmakeprojectmanager/servermode.h index a7eff58eb6e..d527bdb7159 100644 --- a/src/plugins/cmakeprojectmanager/servermode.h +++ b/src/plugins/cmakeprojectmanager/servermode.h @@ -25,12 +25,15 @@ #pragma once +#include +#include #include #include +#include +#include #include #include -#include #include @@ -116,7 +119,6 @@ private: const int m_minorProtocol = -1; int m_requestCounter = 0; - }; } // namespace Internal diff --git a/src/plugins/cmakeprojectmanager/servermodereader.cpp b/src/plugins/cmakeprojectmanager/servermodereader.cpp index 1f61257a893..85ead8eadd3 100644 --- a/src/plugins/cmakeprojectmanager/servermodereader.cpp +++ b/src/plugins/cmakeprojectmanager/servermodereader.cpp @@ -25,26 +25,15 @@ #include "servermodereader.h" -#include "cmakebuildconfiguration.h" -#include "cmakeprojectconstants.h" -#include "cmakeprojectmanager.h" -#include "cmakeprojectnodes.h" -#include "servermode.h" +#include "cmakeparser.h" #include "projecttreehelper.h" -#include #include #include -#include -#include #include #include #include -#include -#include - -#include using namespace ProjectExplorer; using namespace Utils; diff --git a/src/plugins/cmakeprojectmanager/servermodereader.h b/src/plugins/cmakeprojectmanager/servermodereader.h index 8fe8a0a7145..a93b91e6fa9 100644 --- a/src/plugins/cmakeprojectmanager/servermodereader.h +++ b/src/plugins/cmakeprojectmanager/servermodereader.h @@ -26,16 +26,22 @@ #pragma once #include "builddirreader.h" +#include "cmakeconfigitem.h" #include "servermode.h" -#include "cmakeparser.h" + +#include #include +#include #include namespace ProjectExplorer { class ProjectNode; } namespace CMakeProjectManager { + +class CMakeParser; + namespace Internal { class ServerModeReader final : public BuildDirReader