forked from qt-creator/qt-creator
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:
@@ -159,7 +159,7 @@ Qt::ItemFlags CMakeTargetItem::flags(int) const
|
|||||||
|
|
||||||
// CMakeBuildStep
|
// CMakeBuildStep
|
||||||
|
|
||||||
static QString initialStagingDir()
|
static QString initialStagingDir(Kit *kit)
|
||||||
{
|
{
|
||||||
// Avoid actual file accesses.
|
// Avoid actual file accesses.
|
||||||
auto rg = QRandomGenerator::global();
|
auto rg = QRandomGenerator::global();
|
||||||
@@ -167,6 +167,9 @@ static QString initialStagingDir()
|
|||||||
char buf[sizeof(rand)];
|
char buf[sizeof(rand)];
|
||||||
memcpy(&buf, &rand, sizeof(rand));
|
memcpy(&buf, &rand, sizeof(rand));
|
||||||
const QByteArray ba = QByteArray(buf, sizeof(buf)).toHex();
|
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);
|
return QString::fromUtf8("/tmp/Qt-Creator-staging-" + ba);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -200,7 +203,7 @@ CMakeBuildStep::CMakeBuildStep(BuildStepList *bsl, Id id) :
|
|||||||
m_stagingDir = addAspect<FilePathAspect>();
|
m_stagingDir = addAspect<FilePathAspect>();
|
||||||
m_stagingDir->setSettingsKey(STAGING_DIR_KEY);
|
m_stagingDir->setSettingsKey(STAGING_DIR_KEY);
|
||||||
m_stagingDir->setLabelText(Tr::tr("Staging directory:"));
|
m_stagingDir->setLabelText(Tr::tr("Staging directory:"));
|
||||||
m_stagingDir->setDefaultValue(initialStagingDir());
|
m_stagingDir->setDefaultValue(initialStagingDir(kit()));
|
||||||
|
|
||||||
Kit *kit = buildConfiguration()->kit();
|
Kit *kit = buildConfiguration()->kit();
|
||||||
if (CMakeBuildConfiguration::isIos(kit)) {
|
if (CMakeBuildConfiguration::isIos(kit)) {
|
||||||
|
Reference in New Issue
Block a user