CMake: Make sure source/build directories are reachable

Change-Id: Iea4547807b3a59eb9a8cb70d51d9015dbc8013e3
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Marcus Tillmanns
2022-09-14 16:04:30 +02:00
parent a917770053
commit dabd9a175e
2 changed files with 34 additions and 3 deletions

View File

@@ -852,9 +852,31 @@ void CMakeBuildSystem::ensureBuildDirectory(const BuildDirParameters &parameters
{
const FilePath bdir = parameters.buildDirectory;
if (!buildConfiguration()->createBuildDirectory())
handleParsingFailed(
tr("Failed to create build directory \"%1\".").arg(bdir.toUserOutput()));
if (!buildConfiguration()->createBuildDirectory()) {
handleParsingFailed(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()