From 37acb3b8d1bf194c6f85cb6c12c7f72757e44768 Mon Sep 17 00:00:00 2001
From: Tobias Hunger <tobias.hunger@nokia.com>
Date: Thu, 25 Mar 2010 11:55:49 +0100
Subject: [PATCH] Enable shadowbuilding by default for CMake projects

Reviewed-by: dt
---
 .../cmakeprojectmanager/cmakebuildconfiguration.cpp      | 9 ++++-----
 src/plugins/cmakeprojectmanager/cmakeproject.cpp         | 5 +++++
 src/plugins/cmakeprojectmanager/cmakeproject.h           | 2 ++
 src/plugins/cmakeprojectmanager/cmaketarget.cpp          | 5 +++++
 src/plugins/cmakeprojectmanager/cmaketarget.h            | 2 ++
 5 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp
index ab7fbde24f5..b69b5d4c833 100644
--- a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp
@@ -52,6 +52,7 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(CMakeTarget *parent) :
     BuildConfiguration(parent, QLatin1String(CMAKE_BC_ID)),
     m_toolChain(0)
 {
+    m_buildDirectory = cmakeTarget()->defaultBuildDirectory();
 }
 
 CMakeBuildConfiguration::CMakeBuildConfiguration(CMakeTarget *parent, CMakeBuildConfiguration *source) :
@@ -61,6 +62,7 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(CMakeTarget *parent, CMakeBuild
     m_msvcVersion(source->m_msvcVersion)
 {
     cloneSteps(source);
+    m_buildDirectory = cmakeTarget()->defaultBuildDirectory();
 }
 
 QVariantMap CMakeBuildConfiguration::toMap() const
@@ -74,7 +76,7 @@ QVariantMap CMakeBuildConfiguration::toMap() const
 bool CMakeBuildConfiguration::fromMap(const QVariantMap &map)
 {
     m_msvcVersion = map.value(QLatin1String(MSVC_VERSION_KEY)).toString();
-    m_buildDirectory = map.value(QLatin1String(BUILD_DIRECTORY_KEY)).toString();
+    m_buildDirectory = map.value(QLatin1String(BUILD_DIRECTORY_KEY), cmakeTarget()->defaultBuildDirectory()).toString();
 
     return BuildConfiguration::fromMap(map);
 }
@@ -91,10 +93,7 @@ CMakeTarget *CMakeBuildConfiguration::cmakeTarget() const
 
 QString CMakeBuildConfiguration::buildDirectory() const
 {
-    QString buildDirectory = m_buildDirectory;
-    if (buildDirectory.isEmpty())
-        buildDirectory = target()->project()->projectDirectory() + "/qtcreator-build";
-    return buildDirectory;
+    return m_buildDirectory;
 }
 
 ProjectExplorer::ToolChain::ToolChainType CMakeBuildConfiguration::toolChainType() const
diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp
index f9094c975e8..a850ba3ac64 100644
--- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp
@@ -156,6 +156,11 @@ void CMakeProject::changeBuildDirectory(CMakeBuildConfiguration *bc, const QStri
     parseCMakeLists();
 }
 
+QString CMakeProject::defaultBuildDirectory() const
+{
+    return projectDirectory() + QLatin1String("/qtcreator-build");
+}
+
 bool CMakeProject::parseCMakeLists()
 {
     if (!activeTarget() ||
diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.h b/src/plugins/cmakeprojectmanager/cmakeproject.h
index 407bd58d5f8..2c29c457646 100644
--- a/src/plugins/cmakeprojectmanager/cmakeproject.h
+++ b/src/plugins/cmakeprojectmanager/cmakeproject.h
@@ -97,6 +97,8 @@ public:
 
     CMakeBuildTarget buildTargetForTitle(const QString &title);
 
+    QString defaultBuildDirectory() const;
+
     bool parseCMakeLists();
 
 signals:
diff --git a/src/plugins/cmakeprojectmanager/cmaketarget.cpp b/src/plugins/cmakeprojectmanager/cmaketarget.cpp
index a96cedf5033..e87cb5dc708 100644
--- a/src/plugins/cmakeprojectmanager/cmaketarget.cpp
+++ b/src/plugins/cmakeprojectmanager/cmaketarget.cpp
@@ -82,6 +82,11 @@ CMakeBuildConfigurationFactory *CMakeTarget::buildConfigurationFactory() const
         return m_buildConfigurationFactory;
 }
 
+QString CMakeTarget::defaultBuildDirectory() const
+{
+    return cmakeProject()->defaultBuildDirectory();
+}
+
 bool CMakeTarget::fromMap(const QVariantMap &map)
 {
     if (!Target::fromMap(map))
diff --git a/src/plugins/cmakeprojectmanager/cmaketarget.h b/src/plugins/cmakeprojectmanager/cmaketarget.h
index f10bf44e052..4812505fd81 100644
--- a/src/plugins/cmakeprojectmanager/cmaketarget.h
+++ b/src/plugins/cmakeprojectmanager/cmaketarget.h
@@ -59,6 +59,8 @@ public:
 
     CMakeBuildConfigurationFactory *buildConfigurationFactory() const;
 
+    QString defaultBuildDirectory() const;
+
 protected:
     bool fromMap(const QVariantMap &map);
 
-- 
GitLab