diff --git a/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakebuildconfiguration.cpp
index ab7fbde24f52504abb7789deec022d8515851b20..b69b5d4c8337b0e443487a447472f2fbe2a20043 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 f9094c975e8377faaed20dc0c70bb0d4df1f5296..a850ba3ac64213c4edcc2d47c2a0404a204d0e3b 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 407bd58d5f897522a90fe740c566bd0ebc6bb5ee..2c29c4576469da89385d0917a8ffe8d55e15eb0c 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 a96cedf503363f80c006e25733b801e8e881f867..e87cb5dc7086f445716ad169d1f1a8246cf590bc 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 f10bf44e05211d67b5d9c9da84cbe0147ee25884..4812505fd8100e726879d9e59d12a3d55b32d2ee 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);