forked from qt-creator/qt-creator
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:
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user