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>
This commit is contained in:
Tobias Hunger
2017-06-15 10:48:16 +02:00
parent 7e81d330d9
commit ba8e7d1156
2 changed files with 22 additions and 2 deletions

View File

@@ -73,6 +73,17 @@ ServerModeReader::ServerModeReader()
if (m_cmakeFiles.contains(document->filePath())) if (m_cmakeFiles.contains(document->filePath()))
emit dirty(); 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() ServerModeReader::~ServerModeReader()
@@ -98,8 +109,13 @@ void ServerModeReader::setParameters(const BuildDirReader::Parameters &p)
this, &ServerModeReader::handleProgress); this, &ServerModeReader::handleProgress);
connect(m_cmakeServer.get(), &ServerMode::cmakeSignal, connect(m_cmakeServer.get(), &ServerMode::cmakeSignal,
this, &ServerModeReader::handleSignal); this, &ServerModeReader::handleSignal);
connect(m_cmakeServer.get(), &ServerMode::cmakeMessage, connect(m_cmakeServer.get(), &ServerMode::cmakeMessage, [this](const QString &m) {
this, [this](const QString &m) { Core::MessageManager::write(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, connect(m_cmakeServer.get(), &ServerMode::message,
this, [](const QString &m) { Core::MessageManager::write(m); }); this, [](const QString &m) { Core::MessageManager::write(m); });
connect(m_cmakeServer.get(), &ServerMode::connected, connect(m_cmakeServer.get(), &ServerMode::connected,
@@ -168,6 +184,7 @@ void ServerModeReader::stop()
m_future->reportFinished(); m_future->reportFinished();
m_future.reset(); m_future.reset();
} }
m_parser.flush();
} }
bool ServerModeReader::isReady() const bool ServerModeReader::isReady() const

View File

@@ -27,6 +27,7 @@
#include "builddirreader.h" #include "builddirreader.h"
#include "servermode.h" #include "servermode.h"
#include "cmakeparser.h"
#include <memory> #include <memory>
@@ -148,6 +149,8 @@ private:
QList<Project *> m_projects; QList<Project *> m_projects;
mutable QList<Target *> m_targets; mutable QList<Target *> m_targets;
QList<FileGroup *> m_fileGroups; QList<FileGroup *> m_fileGroups;
CMakeParser m_parser;
}; };
} // namespace Internal } // namespace Internal