CMake: Use QtC temporary dir for staging directory for local builds

For builds on the local host, use the Qt Creator temporary directory as
the default "staging" directory. This is a "nicer" directory on Windows
and is also cleared automatically (at Qt Creator shutdown), which is not
true for "/tmp".

Amends 4753b658bb

Change-Id: Ia6dc0d76fb2d97eb7ec931981df057ec83553e69
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
This commit is contained in:
Eike Ziller
2023-06-14 15:59:25 +02:00
parent 875bd3bf96
commit f97d9e51c0

View File

@@ -159,7 +159,7 @@ Qt::ItemFlags CMakeTargetItem::flags(int) const
// CMakeBuildStep
static QString initialStagingDir()
static QString initialStagingDir(Kit *kit)
{
// Avoid actual file accesses.
auto rg = QRandomGenerator::global();
@@ -167,6 +167,9 @@ static QString initialStagingDir()
char buf[sizeof(rand)];
memcpy(&buf, &rand, sizeof(rand));
const QByteArray ba = QByteArray(buf, sizeof(buf)).toHex();
IDeviceConstPtr buildDevice = BuildDeviceKitAspect::device(kit);
if (buildDevice && buildDevice->type() == ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE)
return TemporaryDirectory::masterDirectoryPath() + "/staging-" + ba;
return QString::fromUtf8("/tmp/Qt-Creator-staging-" + ba);
}
@@ -200,7 +203,7 @@ CMakeBuildStep::CMakeBuildStep(BuildStepList *bsl, Id id) :
m_stagingDir = addAspect<FilePathAspect>();
m_stagingDir->setSettingsKey(STAGING_DIR_KEY);
m_stagingDir->setLabelText(Tr::tr("Staging directory:"));
m_stagingDir->setDefaultValue(initialStagingDir());
m_stagingDir->setDefaultValue(initialStagingDir(kit()));
Kit *kit = buildConfiguration()->kit();
if (CMakeBuildConfiguration::isIos(kit)) {