diff --git a/src/plugins/cmakeprojectmanager/builddirmanager.cpp b/src/plugins/cmakeprojectmanager/builddirmanager.cpp index 59d14422481..fac3b491291 100644 --- a/src/plugins/cmakeprojectmanager/builddirmanager.cpp +++ b/src/plugins/cmakeprojectmanager/builddirmanager.cpp @@ -30,6 +30,7 @@ #include "cmaketool.h" #include +#include #include #include #include @@ -37,6 +38,7 @@ #include #include +#include #include #include @@ -239,6 +241,7 @@ void BuildDirManager::startCMake(CMakeTool *tool, const QString &generator, QTC_ASSERT(tool && tool->isValid(), return); QTC_ASSERT(!m_cmakeProcess, return); QTC_ASSERT(!m_parser, return); + QTC_ASSERT(!m_future, return); // Make sure m_buildDir exists: const QString buildDirStr = m_buildDir.toString(); @@ -281,6 +284,17 @@ void BuildDirManager::startCMake(CMakeTool *tool, const QString &generator, ProjectExplorer::TaskHub::clearTasks(ProjectExplorer::Constants::TASK_CATEGORY_BUILDSYSTEM); + Core::MessageManager::write(tr("Running '%1 %2' in %3.") + .arg(tool->cmakeExecutable().toUserOutput()) + .arg(args) + .arg(m_buildDir.toUserOutput())); + + m_future = new QFutureInterface(); + m_future->setProgressRange(0, 1); + Core::ProgressManager::addTask(m_future->future(), + tr("Configuring \"%1\"").arg(projectName()), + "CMake.Configure"); + m_cmakeProcess->setCommand(tool->cmakeExecutable().toString(), args); m_cmakeProcess->start(); emit parsingStarted(); @@ -313,8 +327,15 @@ void BuildDirManager::cmakeFinished(int code, QProcess::ExitStatus status) Core::MessageManager::write(msg); ProjectExplorer::TaskHub::addTask(ProjectExplorer::Task::Error, msg, ProjectExplorer::Constants::TASK_CATEGORY_BUILDSYSTEM); + m_future->reportCanceled(); + } else { + m_future->setProgressValue(1); } + m_future->reportFinished(); + delete m_future; + m_future = 0; + emit dataAvailable(); } diff --git a/src/plugins/cmakeprojectmanager/builddirmanager.h b/src/plugins/cmakeprojectmanager/builddirmanager.h index bc918bc853b..6b903910e3a 100644 --- a/src/plugins/cmakeprojectmanager/builddirmanager.h +++ b/src/plugins/cmakeprojectmanager/builddirmanager.h @@ -36,6 +36,7 @@ #include #include +#include #include #include @@ -109,6 +110,7 @@ private: // For error reporting: ProjectExplorer::IOutputParser *m_parser = nullptr; + QFutureInterface *m_future = nullptr; }; } // namespace Internal