forked from qt-creator/qt-creator
CMake: Make sure source/build directories are reachable
Change-Id: Iea4547807b3a59eb9a8cb70d51d9015dbc8013e3 Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -852,9 +852,31 @@ void CMakeBuildSystem::ensureBuildDirectory(const BuildDirParameters ¶meters
|
|||||||
{
|
{
|
||||||
const FilePath bdir = parameters.buildDirectory;
|
const FilePath bdir = parameters.buildDirectory;
|
||||||
|
|
||||||
if (!buildConfiguration()->createBuildDirectory())
|
if (!buildConfiguration()->createBuildDirectory()) {
|
||||||
handleParsingFailed(
|
handleParsingFailed(tr("Failed to create build directory \"%1\".").arg(bdir.toUserOutput()));
|
||||||
tr("Failed to create build directory \"%1\".").arg(bdir.toUserOutput()));
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const CMakeTool *tool = parameters.cmakeTool();
|
||||||
|
if (!tool) {
|
||||||
|
handleParsingFailed(tr("No CMake tool set up in kit."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tool->cmakeExecutable().needsDevice()) {
|
||||||
|
if (bdir.needsDevice()) {
|
||||||
|
if (bdir.scheme() != tool->cmakeExecutable().scheme()
|
||||||
|
|| bdir.host() != tool->cmakeExecutable().host()) {
|
||||||
|
handleParsingFailed(
|
||||||
|
tr("The CMake executable and the build directory are not on the same device."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} else if (!tool->cmakeExecutable().ensureReachable(bdir)) {
|
||||||
|
// Make sure that the build directory is available on the device.
|
||||||
|
handleParsingFailed(
|
||||||
|
tr("The remote CMake executable cannot write to the local build directory."));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMakeBuildSystem::stopParsingAndClearState()
|
void CMakeBuildSystem::stopParsingAndClearState()
|
||||||
|
@@ -55,6 +55,15 @@ void CMakeProcess::run(const BuildDirParameters ¶meters, const QStringList &
|
|||||||
|
|
||||||
const FilePath cmakeExecutable = cmake->cmakeExecutable();
|
const FilePath cmakeExecutable = cmake->cmakeExecutable();
|
||||||
|
|
||||||
|
if (!cmakeExecutable.ensureReachable(parameters.sourceDirectory)
|
||||||
|
|| !cmakeExecutable.ensureReachable(parameters.buildDirectory)) {
|
||||||
|
QString msg = ::CMakeProjectManager::Internal::CMakeProcess::tr(
|
||||||
|
"The source or build directory is not reachable by the CMake executable.");
|
||||||
|
BuildSystem::appendBuildSystemOutput(msg + '\n');
|
||||||
|
emit finished();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const FilePath sourceDirectory = parameters.sourceDirectory.onDevice(cmakeExecutable);
|
const FilePath sourceDirectory = parameters.sourceDirectory.onDevice(cmakeExecutable);
|
||||||
const FilePath buildDirectory = parameters.buildDirectory.onDevice(cmakeExecutable);
|
const FilePath buildDirectory = parameters.buildDirectory.onDevice(cmakeExecutable);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user