diff --git a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp index 3e857f59fbe130f23360a697c1ab2fde3dec4271..6ad191e14d5473fcc3310a7edc8150ab4a60f684 100644 --- a/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp +++ b/src/plugins/qt4projectmanager/qt4buildconfiguration.cpp @@ -61,7 +61,7 @@ enum { debug = 0 }; Qt4BuildConfiguration::Qt4BuildConfiguration(Qt4Target *target) : BuildConfiguration(target, QLatin1String(QT4_BC_ID)), - m_shadowBuild(false), + m_shadowBuild(true), m_qtVersionId(-1), m_toolChainType(-1), // toolChainType() makes sure to return the default toolchainType m_qmakeBuildConfiguration(0), @@ -72,7 +72,7 @@ Qt4BuildConfiguration::Qt4BuildConfiguration(Qt4Target *target) : Qt4BuildConfiguration::Qt4BuildConfiguration(Qt4Target *target, const QString &id) : BuildConfiguration(target, id), - m_shadowBuild(false), + m_shadowBuild(true), m_qtVersionId(-1), m_toolChainType(-1), // toolChainType() makes sure to return the default toolchainType m_qmakeBuildConfiguration(0), @@ -115,8 +115,8 @@ bool Qt4BuildConfiguration::fromMap(const QVariantMap &map) if (!BuildConfiguration::fromMap(map)) return false; - m_shadowBuild = map.value(QLatin1String(USE_SHADOW_BUILD_KEY), false).toBool(); - m_buildDirectory = map.value(QLatin1String(BUILD_DIRECTORY_KEY)).toString(); + m_shadowBuild = map.value(QLatin1String(USE_SHADOW_BUILD_KEY), true).toBool(); + m_buildDirectory = map.value(QLatin1String(BUILD_DIRECTORY_KEY), qt4Target()->defaultBuildDirectory()).toString(); m_qtVersionId = map.value(QLatin1String(QT_VERSION_ID_KEY)).toInt(); m_toolChainType = map.value(QLatin1String(TOOLCHAIN_KEY)).toInt(); m_qmakeBuildConfiguration = QtVersion::QmakeBuildConfigs(map.value(QLatin1String(BUILD_CONFIGURATION_KEY)).toInt()); @@ -154,6 +154,10 @@ bool Qt4BuildConfiguration::fromMap(const QVariantMap &map) void Qt4BuildConfiguration::ctor() { + m_buildDirectory = qt4Target()->defaultBuildDirectory(); + if (m_buildDirectory == target()->project()->projectDirectory()) + m_shadowBuild = false; + QtVersionManager *vm = QtVersionManager::instance(); connect(vm, SIGNAL(qtVersionsChanged(QList<int>)), this, SLOT(qtVersionsChanged(QList<int>))); diff --git a/src/plugins/qt4projectmanager/qt4project.cpp b/src/plugins/qt4projectmanager/qt4project.cpp index 739ccd8d063bd486e7fb920377291acbe2ed7b8e..5ea18c2e30ac82ee9b4ccab622bd9a6767ee08d9 100644 --- a/src/plugins/qt4projectmanager/qt4project.cpp +++ b/src/plugins/qt4projectmanager/qt4project.cpp @@ -781,6 +781,12 @@ bool Qt4Project::wasEvaluateCanceled() return m_cancelEvaluate; } +QString Qt4Project::defaultTopLevelBuildDirectory() const +{ + QFileInfo info(file()->fileName()); + return projectDirectory() + QChar('/') + info.baseName() + QLatin1String("-build"); +} + void Qt4Project::asyncUpdate() { if (debug) diff --git a/src/plugins/qt4projectmanager/qt4project.h b/src/plugins/qt4projectmanager/qt4project.h index 0d85df229204f02d526cfcab1a955cc9c2692095..324b78825d3483d0d93f8d1f6db62c7e9cb69f85 100644 --- a/src/plugins/qt4projectmanager/qt4project.h +++ b/src/plugins/qt4projectmanager/qt4project.h @@ -161,6 +161,8 @@ public: /// \internal bool wasEvaluateCanceled(); + QString defaultTopLevelBuildDirectory() const; + signals: /// emitted after parse void proFileUpdated(Qt4ProjectManager::Internal::Qt4ProFileNode *node); diff --git a/src/plugins/qt4projectmanager/qt4target.cpp b/src/plugins/qt4projectmanager/qt4target.cpp index a52f8f7c55af8c1ac6fa03c6a107f1bf030989bc..acc3e3e5810900b9122b3f2038c43410088e34b8 100644 --- a/src/plugins/qt4projectmanager/qt4target.cpp +++ b/src/plugins/qt4projectmanager/qt4target.cpp @@ -314,6 +314,29 @@ ToolChain::ToolChainType Qt4Target::preferredToolChainType(const QList<ToolChain return preferredType; } +QString Qt4Target::defaultBuildDirectory() const +{ + if (id() == QLatin1String(Constants::S60_DEVICE_TARGET_ID) + || id() == QLatin1String(Constants::S60_EMULATOR_TARGET_ID) +#if defined(Q_OS_WIN) + || id() == QLatin1String(Constants::MAEMO_DEVICE_TARGET_ID) +#endif + ) + return project()->projectDirectory(); + + QString shortName = QLatin1String("unknown"); + if (id() == QLatin1String(Constants::DESKTOP_TARGET_ID)) + shortName = QLatin1String("desktop"); + else if (id() == QLatin1String(Constants::S60_EMULATOR_TARGET_ID)) + shortName = QLatin1String("symbian_emulator"); + else if (id() == QLatin1String(Constants::S60_DEVICE_TARGET_ID)) + shortName = QLatin1String("symbian"); + else if (id() == QLatin1String(Constants::MAEMO_DEVICE_TARGET_ID)) + shortName = QLatin1String("maemo"); + + return qt4Project()->defaultTopLevelBuildDirectory() + QChar('/') + shortName; +} + bool Qt4Target::fromMap(const QVariantMap &map) { if (!Target::fromMap(map)) diff --git a/src/plugins/qt4projectmanager/qt4target.h b/src/plugins/qt4projectmanager/qt4target.h index b6f1a2abb9510ad52578cdf209ec7ca29e7ff790..3dbe4d10dcbb410ebfc542908a5b47c5f83cd3c2 100644 --- a/src/plugins/qt4projectmanager/qt4target.h +++ b/src/plugins/qt4projectmanager/qt4target.h @@ -68,6 +68,8 @@ public: QList<ProjectExplorer::ToolChain::ToolChainType> filterToolChainTypes(const QList<ProjectExplorer::ToolChain::ToolChainType> &candidates) const; ProjectExplorer::ToolChain::ToolChainType preferredToolChainType(const QList<ProjectExplorer::ToolChain::ToolChainType> &candidates) const; + QString defaultBuildDirectory() const; + signals: void buildDirectoryInitialized(); /// emitted if the build configuration changed in a way that