summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@qt.io>2017-06-15 10:48:16 +0200
committerTobias Hunger <tobias.hunger@qt.io>2017-06-20 12:52:34 +0000
commitba8e7d11562f7d2c811fd3a211fc7c429cddf3c3 (patch)
treeea2acabded56a320eed608dcc9a3158df2fecab4
parent7e81d330d9c6346f8dc485666709b787f6482d3f (diff)
downloadqt-creator-ba8e7d11562f7d2c811fd3a211fc7c429cddf3c3.tar.gz
CMake: Report more cmake errors in server mode
Handle more kinds of errors in CMake server-mode. Task-number: QTCREATORBUG-18318 Change-Id: I43fff7f3cfbd86d01ff05a0936261b8d91aa5d70 Reviewed-by: Eike Ziller <eike.ziller@qt.io> Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
-rw-r--r--src/plugins/cmakeprojectmanager/servermodereader.cpp21
-rw-r--r--src/plugins/cmakeprojectmanager/servermodereader.h3
2 files changed, 22 insertions, 2 deletions
diff --git a/src/plugins/cmakeprojectmanager/servermodereader.cpp b/src/plugins/cmakeprojectmanager/servermodereader.cpp
index a99b6cc77c..e17843c02d 100644
--- a/src/plugins/cmakeprojectmanager/servermodereader.cpp
+++ b/src/plugins/cmakeprojectmanager/servermodereader.cpp
@@ -73,6 +73,17 @@ ServerModeReader::ServerModeReader()
if (m_cmakeFiles.contains(document->filePath()))
emit dirty();
});
+
+ connect(&m_parser, &CMakeParser::addOutput,
+ this, [](const QString &m) { Core::MessageManager::write(m); });
+ connect(&m_parser, &CMakeParser::addTask, this, [this](const Task &t) {
+ Task editable(t);
+ if (!editable.file.isEmpty()) {
+ QDir srcDir(m_parameters.sourceDirectory.toString());
+ editable.file = FileName::fromString(srcDir.absoluteFilePath(editable.file.toString()));
+ }
+ TaskHub::addTask(editable);
+ });
}
ServerModeReader::~ServerModeReader()
@@ -98,8 +109,13 @@ void ServerModeReader::setParameters(const BuildDirReader::Parameters &p)
this, &ServerModeReader::handleProgress);
connect(m_cmakeServer.get(), &ServerMode::cmakeSignal,
this, &ServerModeReader::handleSignal);
- connect(m_cmakeServer.get(), &ServerMode::cmakeMessage,
- this, [this](const QString &m) { Core::MessageManager::write(m); });
+ connect(m_cmakeServer.get(), &ServerMode::cmakeMessage, [this](const QString &m) {
+ const QStringList lines = m.split('\n');
+ for (const QString &l : lines) {
+ m_parser.stdError(l);
+ Core::MessageManager::write(l + "\n");
+ }
+ });
connect(m_cmakeServer.get(), &ServerMode::message,
this, [](const QString &m) { Core::MessageManager::write(m); });
connect(m_cmakeServer.get(), &ServerMode::connected,
@@ -168,6 +184,7 @@ void ServerModeReader::stop()
m_future->reportFinished();
m_future.reset();
}
+ m_parser.flush();
}
bool ServerModeReader::isReady() const
diff --git a/src/plugins/cmakeprojectmanager/servermodereader.h b/src/plugins/cmakeprojectmanager/servermodereader.h
index 0c3a3c2fd8..4265d9627c 100644
--- a/src/plugins/cmakeprojectmanager/servermodereader.h
+++ b/src/plugins/cmakeprojectmanager/servermodereader.h
@@ -27,6 +27,7 @@
#include "builddirreader.h"
#include "servermode.h"
+#include "cmakeparser.h"
#include <memory>
@@ -148,6 +149,8 @@ private:
QList<Project *> m_projects;
mutable QList<Target *> m_targets;
QList<FileGroup *> m_fileGroups;
+
+ CMakeParser m_parser;
};
} // namespace Internal